我想对树中 6 个目录下的文件执行一些处理(例如复制)。每个目录级别的目录名称都是完全不规则的(随机数字和字母),在最后一级,我的文件所在的目录大约有 20 个不同的目录。
一个案例的例子:
cp /000157/DZW123/AHG345/DFR987/000RE7/0025RTZ/file.xxx /destination/file.xxx
相同的案例,最后一个级别不同(还有其他 19 个级别):
cp /000157/DZW123/AHG345/DFR987/000RE7/1298FGT/file.xxx /destination/file.xxx
但对于许多其他情况则完全不同:
cp /001154/CVS456/SAQ452/FRO921/000VG5/0032RRT/file.xxx /destination/file.xxx
由于情况不同,循环不会有帮助。如果有一个解决方案允许我直接进入树中每个分支的 6 个目录(无论命名如何),那似乎是最好的。我试过 cd +n,但这不起作用。
答案1
用于find
此工作
find / -mindepth 7 -maxdepth 7 -iname '*.txt' -exec echo cp {} /destination \;
*.txt
根据您的需要修改图案,echo
如果您喜欢屏幕上看到的内容,则可以删除。
答案2
假设您仅在目录结构的最后一级有文件,则可以使用find
withxargs
来复制文件,如下所示。
find . -type f -mindepth 7 -maxdepth 7 -print0 | xargs -0 cp -t /some/destination/directory
这对于子目录名称中的空格和文件名中的空格也适用。