我目前有一个包含数千个.txt文件的大文件夹,以及每个文件的相应.wav文件,如下所示:
1.txt
1.wav
2.txt
2.wav
每个文件名都是一个随机数。
在此文件夹中,还有一些.trs和.wav文件对的.trs文件。
我需要做的是找到所有三元组数据并将它们复制到另一个文件夹,留下所有没有相应.trs文件的.txt和.wav文件。所以最后只有三个数据位于这个新文件夹中,如下所示:
4.txt
4.trs
4.wav
5.txt
5.trs
5.wav
我所能做的就是将所有.trs文件复制到一个单独的文件夹中,我不知道如何继续并完成此任务。
感谢您提供给我的所有帮助或提示。
答案 0 :(得分:4)
for FILE in *.txt; do
BASE=${FILE%.txt}
[[ -e $BASE.trs && -e $BASE.wav ]] && cp "$FILE" "$BASE.trs" "$BASE.wav" /some/dir
done
要具体使用数字文件名,请使用扩展的globbing:
shopt -s extglob
for FILE in +([[:digit:]]).txt; do
BASE=${FILE%.txt}
[[ -e $BASE.trs && -e $BASE.wav ]] && cp "$FILE" "$BASE.trs" "$BASE.wav" /some/dir
done
答案 1 :(得分:0)
如果我是对的:对于每个trs文件,你有一个要复制的文本和wav文件:
for FILE in *.trs; do
BASENAME=${file%.trs}
cp $FILE $BASENAME.txt $BASENAME.wav somewhere/
done