~/foo
我怎样才能将每个以大于或等于 3 的数字结尾的常规文件(不是目录或任何其他类型)复制到~/bar
?我尝试使用find
和cp
命令,但无法使其工作: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