Bash循环遍历目录和文件名

Ben*_* B. 0 directory bash for-loop

我需要循环遍历具有相同名称的各种目录和文件名,但递增1,从001,002,003到100.

/Very/long/path/to/folder001/very_long_filename001.foobar
/Very/long/path/to/folder002/very_long_filename002.foobar
/Very/long/path/to/folder003/very_long_filename003.foobar


$FILES=/Very/long/path/to/folder*/very_long_filename*.foobar
for f in $FILES
do
  echo "$f"
done
Run Code Online (Sandbox Code Playgroud)

for我上面写的循环不起作用,我真的不明白为什么!有什么提示吗?谢谢.

kon*_*box 5

改为使用数组:

FILES=(/Very/long/path/to/folder*/very_long_filename*.foobar)
for f in "${FILES[@]}"
do
  echo "$f"
done
Run Code Online (Sandbox Code Playgroud)

使其按顺序运行的另一种方法:

for i in $(seq -w 001 100); do
    f="/Very/long/path/to/folder${i}/very_long_filename${i}.foobar"
    [[ -e $f ]] || continue  ## optional test.
    echo "$f"
done
Run Code Online (Sandbox Code Playgroud)

顺便说一句,你的for循环不起作用,因为你开始了你的作业$:

`$FILES=...`
Run Code Online (Sandbox Code Playgroud)

应该就是这样

FILES=/Very/long/path/to/folder*/very_long_filename*.foobar
Run Code Online (Sandbox Code Playgroud)

仍然使用数组更安全,因为它在扩展期间保留文件名中的空格for.