我如何编写一个bash脚本,遍历parent_directory内的每个目录,并在每个目录中执行命令。

目录结构如下:

Parent_directory(名称可以是任何东西-不遵循模式) 001(目录名称遵循此模式) 0001.txt(文件名遵循此模式) 0002.三种 0003.三种 002 0001.三种 0002.三种 0003.三种 0004.三种 003 0001.三种 目录数量未知。


当前回答

我不明白文件的格式,因为你只想遍历文件夹…你在找这样的东西吗?

cd parent
find . -type d | while read d; do
   ls $d/
done

其他回答

你可以在每个文件夹中运行一行命令序列,比如:

for d in PARENT_FOLDER/*; do (cd "$d" && tar -cvzf $d.tar.gz *.*)); done

如果顶层文件夹是已知的,你可以这样写:

for dir in `ls $YOUR_TOP_LEVEL_FOLDER`;
do
    for subdir in `ls $YOUR_TOP_LEVEL_FOLDER/$dir`;
    do
      $(PLAY AS MUCH AS YOU WANT);
    done
done

在$上(想玩多少就玩多少);你可以放尽可能多的代码。

注意,我没有在任何目录上使用“cd”。

欢呼,

当当前目录为parent_directory时,可以执行以下操作:

for d in [0-9][0-9][0-9]
do
    ( cd "$d" && your-command-here )
done

(和)创建一个子shell,因此当前目录不会在主脚本中更改。

你可以使用

find .

递归搜索当前目录下的所有文件/dirs

然后您可以像这样通过xargs命令输出

find . | xargs 'command here'
for p in [0-9][0-9][0-9];do
    (
        cd $p
        for f in [0-9][0-9][0-9][0-9]*.txt;do
            ls $f; # Your operands
        done
    )
done