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

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

答え1

-execdirコマンドrename1を使用できます。

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これは 、Debian ベースのシステムの一部および他のシステムで呼び出される構文です。perl-renamerenameprenameperl-rename

関連情報