如何将具有图案的子文件夹移动到新位置?
来源列表示例:
/data/aaa/_old/
/data/bbb/_old/
目的地应该是:
/archive/aaa/_old/
/archive/bbb/_old/
有没有办法用正则表达式来做到这一点move
?
就像是:
mv /data/(.*)/_old/(.*) /archive/$1/_old/$2
答案1
只要您不想通过正则表达式进行复杂的路径转换,就只需在完整路径上使用正则表达式来选择文件,如您的示例所示。这是一个好主意: https://stackoverflow.com/questions/18640612/archive-old-files-only-and-re-construct-folder-tree-in-archive
结合 find 和 cpio 的解决方案
cd /data
find . -type f -regex "/data/.*/_old/.*" -print0 | cpio -dumpl0 /archive
find . -type f -regex "/data/.*/_old/.*" -print0 | xargs -0 rm
我没有测试过,所以请在测试环境中尝试一下。