Bashで1つのコマンドを使用してファイルを検索して名前を変更する

Bashで1つのコマンドを使用してファイルを検索して名前を変更する

RHEL 7サーバーでファイルを見つけて名前を変更するには?命令一つで可能でしょうか?

たとえば、次のようにできます。

find . -name filename 

その後cd、ディレクトリに移動し、1行ですべてmv filename.conf filename2.conf実行したいと思います。

答え1

このフラグを使用できますexecdir

  find . -type f -name <original_file_name> -execdir mv {} <new_file_name> \;

答え2

file.conf名前をに変更するには、次のオプションをfile2.conf使用します。find-exec

find . -name "*.conf" -type f -exec sh -c 'mv "$1" "${1%.conf}2.conf"' sh {} \;

各ファイル名は、コマンドを実行するためのオプションで始まる新しいシェルプロセスに{}引数として渡されます。$1-execmv

  • ${1%.conf}シェルパラメータ拡張で、.confファイル名からサフィックスを削除します。
  • 2.confファイル名に新しいサフィックスを追加する

コマンドを実行する前にテストするには、echo次のように追加します。

find . -name "*.conf" -type f -exec sh -c 'echo mv "$1" "${1%.conf}2.conf"' sh {} \;

関連情報