我需要将文件从一个目录移动到另一个目录。但也存在一些问题。我的文件名模式如下:
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 \;