重命名以“Unix_”为前缀的文件夹中的所有文件,即假设文件夹中有两个文件a.txt和b.pdf,则它们都应重命名从单个命令Unix_a.txt和Unix_b.pdf在单个unix命令中重命名文件夹中的所有文件并使用前缀
回答
尝试rename
命令的文件夹与所述文件:
rename 's/^/Unix_/' *
重命名(sed s command)的参数表示来替换正则表达式^与Un ix_。脱字号(^)是一个特殊字符,意思是行的开头。
你能解释一下'/^/.../'的含义吗? – 2016-12-24 20:07:51
@Matteo'的/^/.../'是[rename命令]的perl表达式参数(http://www.tecmint.com/rename-multiple-files-in-linux/) – RoyalleBlue 2017-01-19 15:38:12
如果你的文件名包含没有whitepace和你没有任何子目录,你可以用一个简单的循环for
:
$ for FILENAME in *; do mv $FILENAME Unix_$FILENAME; done
否则使用便捷rename
命令(这是一个Perl脚本) - 尽管它可能在每个Unix上都不可用(例如,OS X不包含rename
)。
在debian-administration.org简短概述:
如果你的文件名包含空格它更容易使用find
,在Linux下面应该工作:
$ find . -type f -name '*' -printf "echo mv '%h/%f' '%h/Unix_%f\n'" | sh
在BSD系统上,不幸的是没有-printf
选项。但GNU findutils应该可以安装(例如,在Mac OS X上使用brew install findutils
)。
$ gfind . -type f -name '*' -printf "mv \"%h/%f\" \"%h/Unix_%f\"\n" | sh
我想这正是你却被寻找:
ls | xargs -I {} mv {} Unix_{}
是的,这很简单,优雅和强大,以及courese的ALOS ONELINE-COMAND。 你可以从我这里得到更详细的介绍页面上:Rename Files and Directories (Add Prefix)
这就是我要找的.... – Green 2017-01-05 10:02:04
也适用于项目与空间,而忽略目录
for f in *; do [[ -f "$f" ]] && mv "$f" "unix_$f"; done
我最近所面对这个相同的情况下,发现了一个更简单的解决方案内置。我在这里分享它,以便它可以帮助其他人寻找解决方案。
借助OS X Yosemite,Apple已将批量重命名功能直接集成到Finder中。详细信息可在here。我抄在下面的步骤,以及,
重命名多个项目
选择的项目,然后按住Ctrl键单击其中之一。
在快捷菜单中,选择重命名项目。
在重命名文件夹项目下的弹出式菜单中,选择替换名称中的文本,将文本添加到名称或更改名称格式。
替换文本:在“查找”字段中输入要删除的文本,然后在“替换为”字段中输入要添加的文本。
添加文本:输入要在该字段中添加的文本,然后选择在当前名称之前或之后添加文本。
格式:选择文件的名称格式,然后选择在名称前后放置索引,计数器或日期。在自定义格式字段中输入一个名称,然后输入您想要开始的号码。
单击重命名。
如果您的文件中有一个常见模式,那么您可以使用替换文本,否则添加文本也可以完成这项工作。
优秀 - 为我节省了很多时间! – user3000868 2016-07-25 22:51:02
你可以只使用-i
代替-I {}
ls | xargs -i mv {} unix_{}
这也完美的作品。
ls
- 列出了目录xargs
所有文件 - 接受由行中的所有文件系由于-i
选项{}
是所有文件的占位符,必要的,如果xargs
获得两个以上的参数作为输入
用awk:
ls -lrt | grep '^-' | awk '{print "mv "$9" unix_"$9""}' | sh
检查此链接=> http://www.cyberciti.biz/tips/renaming-multiple-files-at-a-shell-prompt.html – 2011-06-13 11:02:26
请点击此处查看:http://theunixshell.blogspot.com/2013/ 01/bulk-renaming-of-files-in-unix.html – Vijay 2013-01-10 06:34:11