Скопируйте файлы, перечисленные командой find, и переименуйте их, указав путь

Скопируйте файлы, перечисленные командой find, и переименуйте их, указав путь

Я делаю findиз всех файлов с определенным расширением, а затем копирую их в определенную папку, но большинство из них перезаписываются, потому что у них одинаковое имя. Как я могу с помощью команды Linux получить путь к файлу и заменить его на имя файла?

Сейчас я использую эту команду:

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

Итак, если у меня есть два файла по определенному пути, например:

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

при использовании команды я должен получить что-то вроде этого в папке AllCssFiles:

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

решение1

Вы можете использовать -execdirи команду rename1 .

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

если вы не уверены, вы можете использовать renamewith-n

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

1 Это синтаксис , который в некоторых системах на базе Debian perl-renameназывается , а в других — .renameprenameperl-rename

Связанный контент