繁体   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