renomeia + pergunta antes de prosseguir

-1

Eu preciso do programa para encontrar o nome do arquivo com uma determinada string e, em seguida, renomeá-lo. Essa parte está funcionando. Mas eu preciso adicionar alguma entrada do usuário que perguntará ao usuário antes de cada renomeação se ele quiser renomear o arquivo ou não. Então, depois de encontrar todos os arquivos, ele deve escrever nomes de arquivos que foram renomeados. O comando só renomei todos os arquivos que correspondem à string.

find . -type f -exec rename's/(.*)\/(.*)string1(.*)/$1\/string2$2string3$3/' {} + ;;
    
por Daniel 29.12.2015 / 22:06

1 resposta

4

Você pode usar a ação find do comando -ok no lugar do -exec

De man find

-ok command ;
          Like  -exec but ask the user first.  If the user agrees, run the
          command.  Otherwise just return false.  If the command  is  run,
          its standard input is redirected from /dev/null.

Por exemplo, dado

$ touch file{A..F}
$ ls
fileA  fileB  fileC  fileD  fileE  fileF

então

$ find . -name 'file*' -ok rename -v -- 's/file/newfile/' {} \; >rename.log
< rename ... ./fileB > ? y
< rename ... ./fileC > ? n
< rename ... ./fileF > ? n
< rename ... ./fileD > ? y
< rename ... ./fileE > ? n
< rename ... ./fileA > ? y

e

$ cat rename.log 
./fileB renamed as ./newfileB
./fileD renamed as ./newfileD
./fileA renamed as ./newfileA

Observe que você não pode usar o formulário + de vários argumentos (já que cada comando de renomeação precisa ser processado separadamente).

    
por steeldriver 29.12.2015 / 22:48