Unix 使用模式移动文件夹

Unix 使用模式移动文件夹

如何将具有图案的子文件夹移动到新位置?

来源列表示例:

  • /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

我没有测试过,所以请在测试环境中尝试一下。

相关内容