[英]In Bash, can a “mv-for loop” be done on one line?
我經常要求打字
#!/usr/bin/bash
for i in files-*
do
mv $i ${i/files/items}
done
這樣做可以更簡單嗎?
在一行:是的。 更簡單:可能不是。
for i in files-*; do mv "$i" "${i/files/items}"; done
如果你經常需要這樣的東西,你可以將它封裝在一個函數中,然后調用該函數。 或者在首選編輯器中定義某種模板/文本塊/宏。
如果安裝了perl
,則可以使用rename
:
rename 's/files/items/' files-*
它不會比Ansgar已經提出的要短得多。 但是,您可以通過以下幾種機制保存一些輸入:
使用bash的命令歷史記錄來調用該命令。 不完全是高科技,但這可以節省你很多打字,而且你不必在你的系統上保存/改變任何東西。
將命令放在腳本文件中,保存在路徑中的某個位置。
#/bin/bash
for i in files-*; do
mv $i ${i/files/items}
done
在這種情況下,我會保持多行完整,以優化可讀性
將命令的別名添加到.bashrc文件中
alias movem='for i in files-*; do mv $i ${i/files/items}; done'
完成后,只需鍵入別名即可運行該命令。 這樣做的一個優點是您不必創建腳本文件。
ps: /usr/bin/bash
??? 你用的是什么系統?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.