如何使用find指令重命名文件

如何使用find指令重命名文件

我正在嘗試使用命令重命名文件find

我正在嘗試將 file-a 重新命名為 file-10。

為此,我首先嘗試了以下命令:

sps@sps-Inspiron-N5110:~$ find ~ -type f -name test-a -exec mv test-10 '{}' ';'
mv: cannot stat `test-10': No such file or directory
sps@sps-Inspiron-N5110:~$

然後我嘗試了以下內容:

sps@sps-Inspiron-N5110:~$ find ~ -type f -name test-a -exec mv test-a test-10 '{}' ';'
mv: target `/home/sps/test-a' is not a directory
sps@sps-Inspiron-N5110:~$

現在我想不出如何做到這一點find。我正在嘗試使用 執行此操作find,因為我將有許多具有相同文件名的目錄,並且我想在一個命令中將所有test-a目錄更改為。test-10任何人請建議。

謝謝。

答案1

的語法mvmv <source> <target>,因此最終執行的命令find應如下所示:

mv test-a test-10 

所以,第一個猜測是嘗試:

find ~ -type f -name test-a -exec mv {} test-10 \;

但是,這將失敗,因為{}擴展為完整路徑並且mv仍然在當前目錄中運行,導致所有檔案被移動到當前目錄並被覆蓋。為了避免這種情況,您可以使用-execdir以便mv在找到檔案的目錄中執行:

find ~ -type f -name test-a -execdir mv {} test-10 \;

或者,由於檔案名稱始終相同:

find ~ -type f -name test-a -execdir mv test-a test-10 \;

相關內容