Copie os arquivos listados pelo comando find e renomeie-o com o caminho

2

Estou fazendo um find de todos os arquivos com determinada extensão e copio-os para uma determinada pasta, mas a maioria deles é sobrescrita porque eles têm o mesmo nome. Como posso, com um comando do Linux, obter o caminho do arquivo e substituí-lo no arquivo de nome?

Agora mesmo estou usando este comando:

find . -name "*.css" | xargs cp -t /folder/AllCssFiles/

então, se eu tiver dois arquivos em um determinado caminho, como este:

/something/abc/file.css
/anyting/xyz/file.css

quando eu uso o comando eu deveria pegar algo assim na pasta AllCssFiles:

  /something/abc/file.css   (name of the file)
  /anyting/xyz/file.css
    
por RandomTech 23.11.2017 / 13:03

1 resposta

2

Você pode usar -execdir e o comando rename 1 .

find ./ -type f -name "*.css" -execdir rename -v "s/search/replace/" {} \;

se você não tiver certeza, poderá usar rename com -n

  -n, -nono
           No action: print names of files to be renamed, but don't rename.

1 Esta é a sintaxe para perl-rename , que é chamada rename em sistemas baseados em Debian, prename em alguns e perl-rename em outros.

    
por 23.11.2017 / 13:15

Tags