Linux遍历文件夹下的sehll脚本执行
时间: 2024-01-04 11:04:32 浏览: 144
你可以使用以下命令遍历一个文件夹下的所有 shell 脚本并执行:
```
find /your/directory -type f -name "*.sh" -exec chmod +x {} \; -exec {} \;
```
这个命令会在 `/your/directory` 文件夹下查找所有的扩展名为 `.sh` 的文件,并将它们的权限设置为可执行。然后它会执行每个找到的脚本。
相关问题
linux遍历当前文件夹下所有子文件夹的zip包 并unzip
在Linux中,你可以使用`find`命令结合`unzip`命令来遍历当前目录及其子目录下的所有`.zip`文件并解压它们。下面是一个简单的步骤:
1. 打开终端。
2. 使用`find`命令寻找指定类型的文件,这里是`.zip`文件:
```
find . -type f -name "*.zip"
```
`.` 表示当前目录,`-type f` 指定查找的是文件而非目录,`-name "*.zip"` 匹配文件名包含".zip"的所有文件。
3. 接着,你需要创建一个新的shell脚本或使用管道(`|`)将结果传递给`unzip`命令逐个解压。由于直接通过`find`命令解压可能会有安全风险,通常建议创建一个临时文件列表,然后再逐一解压。这里假设你想将结果保存到一个文本文件`files_to_unzip.txt`:
```
find . -type f -name "*.zip" > files_to_unzip.txt
```
4. 然后打开这个文本文件,逐行运行`unzip`命令,例如使用`xargs`命令:
```
cat files_to_unzip.txt | xargs -I {} unzip {}
```
这会读取`files_to_unzip.txt`中的每个路径,并对每个路径执行`unzip`命令。
5. 最好检查是否有错误,因为如果某个文件无法解压,`unzip`可能会终止整个过程。可以在解压操作之后添加一些错误处理。
linux 循环显示所有的sh.*文件.,利用shell脚本遍历文件夹内所有的文件并作整理统计的方法...
好的,让我来回答你的问题。
显示所有的sh.*文件可以使用以下命令:
```sh
ls sh.*
```
这会列出当前目录下所有以 "sh." 开头的文件。
至于遍历文件夹内所有的文件并作整理统计的方法,可以使用以下 shell 脚本:
```sh
#!/bin/bash
# 定义变量
file_count=0
dir_count=0
# 定义函数
function count_files() {
for file in $1/*; do
if [ -d "$file" ]; then
# 如果是目录,则递归调用函数
((dir_count++))
count_files "$file"
elif [ -f "$file" ]; then
# 如果是文件,则统计文件个数
((file_count++))
fi
done
}
# 调用函数
count_files "/path/to/folder"
# 输出结果
echo "文件夹内共有 $dir_count 个子目录,$file_count 个文件。"
```
这个脚本会遍历 /path/to/folder 文件夹内的所有文件和子目录,并统计文件和子目录的数量。你只需要将 /path/to/folder 替换为你想要统计的文件夹路径即可。
阅读全文