web-dev-qa-db-ja.com

findコマンドでリストされたファイルをコピーし、パスに名前を変更します

特定の拡張子を持つすべてのファイルのfindを実行してから、それらを特定のフォルダーにコピーしますが、名前が同じであるため、ほとんどのファイルが上書きされます。 Linuxコマンドを使用して、ファイルのパスを取得し、名前ファイルに置き換えるにはどうすればよいですか?

現在、私はこのコマンドを使用しています:

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

したがって、次のような特定のパスに2つのファイルがある場合:

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

コマンドを使用すると、AllCssFilesフォルダーに次のようなものが表示されます。

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

-execdirとコマンドrenameを使用できます1

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

よくわからない場合は、rename-nと一緒に使用できます

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

1これはPerl-renameの構文であり、Debianベースのシステムではrenameと呼ばれ、一部ではprename、その他ではPerl-renameと呼ばれます。

2
FaxMax