Я делаю 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
и команду rename
1 .
find ./ -type f -name "*.css" -execdir rename -v "s/search/replace/" {} \;
если вы не уверены, вы можете использовать rename
with-n
-n, -nono
No action: print names of files to be renamed, but don't rename.
1 Это синтаксис , который в некоторых системах на базе Debian perl-rename
называется , а в других — .rename
prename
perl-rename