查找和for循环

wjd*_*jdp 2 find shell-script for

尝试在大型音乐收藏中进行从 M4A 到 OGG 的大规模转换,我有:

#!/bin/sh
for i in `find /home/family/Music -name *.m4a -print0`
   #do ffmpeg -i "$i" -acodec libvorbis -aq 6 -vn -ac 2 "$i.ogg";
   do echo $i
done
Run Code Online (Sandbox Code Playgroud)

所有文件的名称中都会有空格,上面的输出显示了一个像这样的文件:

/home/family/Music/The
Kooks/Inside
In
_
Inside
Out/06
You
Don't
Love
Me.m4a
Run Code Online (Sandbox Code Playgroud)

每个空格都标记一个新行,我认为-print0会解决这个问题吗?

jim*_*mij 5

使用while连同循环read -d '' -r

find /home/family/Music -name '*.m4a' -print0 | while read -d '' -r file; do
   echo "$file"
done
Run Code Online (Sandbox Code Playgroud)