所有文件和子目录的循环cat命令

时间:2018-02-22 19:54:52

标签: linux

我有很多有两种语言的mp3文件,所以

语言1是EN / 1 / 1.mp3 .... EN / 2 / 12.mp3

语言2是DE / 1 / 1.mp3 .... DE / 2 / 12.mp3

所以文件在同一个子文件夹和同名中,我想合并它们

EN / 1 / 1.mp3和DE / 1 / 1.mp3为1个文件并保存在文件夹ENDE / 1 / 1.mp3

我使用此命令

cat  EN/1/1.mp3 DE/1/1.mp3 > ENDE/1/1.mp3

并且它可以工作,但我想要的东西会将此命令循环到所有子文件夹中的所有文件。

1 个答案:

答案 0 :(得分:2)

要循环浏览文件,您可以使用以下内容,但正如@ekaerovets所述,我相信您的文件无效。

cd EN
for F in */*.mp3; do
  mkdir -p ../ENDE/$(dirname $F)
  cat $F ../DE/$F > ../ENDE/$F
done

假设您的文件只是一个深度的子目录。如果树更深,那么find会更合适,即:

cd EN
for F in $(find -type f -name \*.mp3); do
  mkdir -p ../ENDE/$(dirname $F)
  cat $F ../DE/$F > ../ENDE/$F
done