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