我有一个用bash编写的脚本来转换文件夹中的flac文件。但是,如果文件位于我正在调用的文件夹的子目录中,则它不起作用。
例如,如果我调用一个直接包含flac文件的目录,那么脚本运行正常。如果调用的文件夹和flac文件之间有文件夹,则不会运行。
AlbumName/*.flac
< - 在致电AlbumName
时运行良好
AlbumName/CD1/*.flac
< - 在致电AlbumName
时不会运行
以下是我正在使用的代码:
for file in "$1"/*.flac
do
if [ -f "${file}" ]; then
# do flac conversion script
fi
done
有什么想法吗?
答案 0 :(得分:1)
您可以使用.flac
获取所有find
个文件,然后执行flac转换脚本,并将每个文件作为参数传递:
find . -path "*.flac" -type f -exec ./flac_converter.sh "{}" \;
此命令查找路径-type f
中与字符串末尾的.
匹配的每个文件(*.flac
),然后对每个匹配{{1}执行-exec flac_converter.sh
}。
所以例如,如果我有这个文件结构:
{}
运行该命令将产生:
$ tree flacs
flacs
├── asd.flac
├── dsa.flac
└── more
└── more_asd.flac
$ find . -path "*.flac" -type f -exec ./flac_converter.sh "{}" \;
I'm converting ./flacs/asd.flac
I'm converting ./flacs/dsa.flac
I'm converting ./flacs/more/more_asd.flac
仅使用flac_converter.sh
(来自$1
的文件作为输入)回显该句子。请注意它顺利运行find
以及./flacs/more/*.flac
。