1. 假设有这样一个目录/data,子目录下有 a , b , c ... 每个子目录a , b , c 都有 format=txt/version=1/data_date=2019-09-23 和 format=txt/version=1/data_date=2019-09-24,这些目录下面有zip和txt.zip两种文件。
我们需要取出format/txt/data_date=2019-09-24下面的zip文件。
2. 因为目录级别太多,我们需要用到find命令的path参数排除某个目录。
find -type f -path "*/format=txt/version=1/data_date=2019-09-23/*" -prune -o -name "*.gz" -print
3. 现在我们已经可以筛选出来所有2019-09-24的zip文件并且打印了出来,现在把它们复制到某个目录下。
find -type f -path "*/format=txt/version=1/data_date=2019-09-23/*" -prune -o -name "*.gz" -print -exec cp {} /data/test/output \;
4. /data/test/output目录下的所有文件包含了txt.zip,所以现在需要将文件名包含txt的删除。
find /data/test/output -name '*txt*' | xargs rm -rf
附:
1. 列举排除多个path的查询命令参考:http://www.51gjie.com/linux/1025.html