Unix使用模式移动文件夹

如何将子文件夹移动到新位置?

来源示例列表:

  • /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环境中尝试。