我正在嘗試使用命令重命名文件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
的語法mv
為mv <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 \;