簡體   English   中英

在Bash中,可以在一行上完成“mv-for循環”嗎?

[英]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命令歷史記錄

使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM