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

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

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

No momento 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 uso o comando devo obter algo assim na pasta AllCssFiles:

  /something/abc/file.css   (name of the file)
  /anyting/xyz/file.css

Responder1

Você pode usar -execdire o comando rename1 .

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

se você não tiver certeza, você pode usar renamecom-n

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

1 Esta é a sintaxe perl-renamechamada renameem sistemas baseados em Debian, prenameem alguns e perl-renameem outros.

informação relacionada