[英]Rename file in Linux if file exist in a single command
如果文件存在於單個命令中,則需要在Linux中重命名文件。
假設我想搜索test.text文件,我想用test.text.bak替換它然后我觸發以下命令
find / -name test.text如果它存在,那么我發出命令mv test.text test.text.bak
在這種情況下,我正在執行兩個命令,但我希望這應該在單個命令中發生。
謝謝
如果你想在dir
的子目錄中找到test.txt
並移動它,試試吧
find dir -name test.txt -exec mv {} {}.bak \;
這將移動符合條件的所有文件。 如果要從當前目錄遍歷,請使用.
作為目錄而不是dir
。
從技術上講,這將在一個單獨的進程中為find
匹配的每個文件生成一個單獨的命令,但它是“一個命令”,因為你使用find
作為你實際上自己開始的唯一命令。 (如果願意的話,可以將find
視為粗略的編程語言。)
只是:
mv test.text test.test.bak
如果文件不存在,則不會重命名任何內容。 要在沒有文件退出時抑制錯誤消息,請使用以下語法:
mv test.text test.test.bak 2>/dev/null
for FILE in `find . -name test.test 2>/dev/null`; do mv $FILE $FILE.bak; done
這將搜索當前和子目錄中名為“test.test”的所有文件,然后將每個文件重命名為.bak
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.