Copia arquivos que terminam em um número de um diretório

2

Como eu poderia copiar todos os arquivos regulares (não diretórios ou qualquer outro tipo) de ~/foo que terminasse em um dígito maior ou igual a 3 para ~/bar ? Eu tentei com os comandos find e cp , mas não consegui fazê-lo funcionar: find ~/foo -type f -regex '.*[!012]' -exec cp ~/bar .

Exemplos:

  • some.file12 não seria copiado porque seu último dígito é 2 e 2 < 3.
  • somefile603 seria copiado. 3 = 3.
  • foo3405 seria copiado. 4 > 3.
  • file02.txt não seria copiado. Não termina em um dígito.
por Ravexina 20.06.2017 / 18:35

2 respostas

3

Vai funcionar (inclui diretórios também):

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

com find (apenas arquivos):

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

usando regex (apenas arquivos):

find ./src -regex "^.*[3-9]$" -exec cp {} path/to/dst/ \;
    
por Ravexina 20.06.2017 / 20:56
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
    
por Pawel Debski 20.06.2017 / 18:54