首页 文章

bash:递归地将父子目录中的所有匹配文件移动到新子目录

提问于
浏览
0

我一直试图以递归方式将父子目录中的所有匹配文件移动到新子目录 . 当前结构如下(有波文件以外的文件,需要排除它们):

.
├── a
│   ├── a.wav
│   └── media.dir
├── b
│   ├── b.wav
│   └── media.dir
├── c
│   ├── c.wav
│   └── media.dir
└── d
    ├── d.wav
    └── media.dir

我想将每个目录中的wave文件移动到相应的media.dir . 到目前为止,我有这个,这是匹配,但不是文件移动(当我回应而不是mv,我可以确认文件):

for dir in */
do
    find . -iname '*.wav' -print0 | xargs -0 -I{} mv '{}' "$dir/media.dir"
done

1 回答

  • 2

    您可能希望在代码中使用 find "$dir" 而不是 find .

    for dir in */
    do
        find "$dir" -iname '*.wav' -print0 | xargs -0 mv -t "$dir/media.dir"
    done
    

相关问题