如何将部分但不是全部文件从一个目录移动到另一个目录?

如何将部分但不是全部文件从一个目录移动到另一个目录?

我需要将文件从一个目录移动到另一个目录。但也存在一些问题。我的文件名模式如下:

  apple.0, apple.<n>, n -> {0,1,2,3 ...~ }

所以mv apple.*不起作用,因为我需要保留 apple.0,它始终是活动的。

如何移动它们(在这种情况下,保留 apple.0)?

答案1

如果你使用 bash 你应该能够使用

mv apple.[^0]* /other/directory/

这将移动扩展名不以 0 开头的所有文件([ ] 开头的“^”在 bash 中表示“不”)。如果你确定只有一个角色作为结局,你也可以使用

mv apple.[^0] /other/directory/

如果您必须确保仅以数字结尾的文件,您可以使用

shopt -s extglob
mv apple.@([1-9])*([0-9]) /other/directory/

但这与 apple.01 或类似的不匹配......

最后一个应该得到所有以数字结尾的苹果文件

shopt -s extglob
mv apple.*([1-9]|[0-9]+([0-9])) /other/directory/

答案2

如果您有 bash 并且不关心类似的匹配文件apple.not-a-number,请尝试

shopt -s extglob
mv apple.!(0) /new/directory

答案3

根据您的需要指定要移动和不移动的文件

find /source/directory -maxdepth 1 -name "apple.*" ! -name "apple.0" -exec mv {} /new/directory \;

相关内容