Linux

在 bash 中的一個命令上查找文件並重命名

  • August 1, 2019

如何在 RHEL 7 伺服器中找到文件並重命名?這可以在一個命令中完成嗎?

例如,我可以:

find . -name filename 

然後cd到目錄然後mv filename.conf filename2.conf,但我想在一行中完成所有這些。

您可以使用該execdir標誌。

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

如果要重命名file.conffile2.conf,請使用find以下-exec選項:

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

每個文件名{}都作為參數傳遞給以執行命令的選項$1啟動的新 shell 程序。-exec``mv

  • ${1%.conf}``.conf是一個 shell 參數擴展並從文件名中刪除後綴
  • 2.conf將新後綴添加到文件名

如果您想在執行命令之前對其進行測試,請添加echo如下內容:

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

引用自:https://unix.stackexchange.com/questions/530957