从目录中复制以数字结尾的文件

从目录中复制以数字结尾的文件

~/foo我怎样才能将每个以大于或等于 3 的数字结尾的常规文件(不是目录或任何其他类型)复制到~/bar?我尝试使用findcp命令,但无法使其工作:find ~/foo -type f -regex '.*[!012]' -exec cp ~/bar

例子:

  • some.file12不会被复制,因为它的最后一位数字是 2,并且 2 < 3。
  • somefile603将被复制。3 = 3。
  • foo3405将被复制。4 > 3。
  • file02.txt不会被复制。它不是以数字结尾。

答案1

它会起作用(也包括目录):

cp ./*[3-9] /path/to/dst

使用查找(仅限文件):

find ./src -iname "*[3-9]" -type f -exec cp {} path/to/dst/ \;

使用正则表达式(仅限文件):

find ./src -regex "^.*[3-9]$" -exec cp {} path/to/dst/ \;

答案2

pdebski@PaDe:~/test$ ls -l
total 0
-rw-rw-r-- 1 pdebski pdebski 0 cze 20 18:42 a1
-rw-rw-r-- 1 pdebski pdebski 0 cze 20 18:42 a7
-rw-rw-r-- 1 pdebski pdebski 0 cze 20 18:45 a9
pdebski@PaDe:~/test$ ls -l ../test2
total 0
pdebski@PaDe:~/test$ find . -name '*[3456789]' -print -exec cp {} ../test2 \;
./a9
./a7
pdebski@PaDe:~/test$ ls -l ../test2
total 0
-rw-rw-r-- 1 pdebski pdebski 0 cze 20 18:51 a7
-rw-rw-r-- 1 pdebski pdebski 0 cze 20 18:51 a9

相关内容