在一个unix命令中用一个前缀重命名文件夹中的所有文件
重命名前缀为“Unix_”的文件夹中的所有文件,即假设一个文件夹有两个文件a.txt和b.pdf,则它们都应该从一个命令重命名为Unix_a.txt和Unix_b.pdf
如果你的文件名不包含空白,而你没有任何子目录,你可以使用一个简单的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
使用文件在文件夹中尝试rename
命令:
rename 's/^/Unix_/' *
我认为这正是你想要的:
ls | xargs -I {} mv {} Unix_{}
是的,这是简单,优雅和强大的,而且是在线索取的。 您可以在页面上获得更详细的介绍: 重命名文件和目录(添加前缀)
我最近面对同样的情况,发现了一个更简单的内置解决scheme。 我在这里分享,这样可以帮助其他人寻找解决scheme。
借助OS X优胜美地,苹果已经将批量重命名function直接集成到了Finder中。 详细信息可在这里find 。 我也复制了下面的步骤,
重命名多个项目
-
select项目,然后按住Control键点按其中一个项目。
-
在快捷菜单中,select重命名项目。
-
在“重命名文件夹项目”下的popup式菜单中,selectreplace名称中的文本,将文本添加到名称或更改名称格式。
-
replace文本:在“查找”字段中input要删除的文本,然后在“replace为”字段中input要添加的文本。
-
添加文本:在字段中input要添加的文本,然后select在当前名称之前或之后添加文本。
-
格式:为文件select名称格式,然后select在名称前后放置索引,计数器或date。 在“自定义格式”字段中input名称,然后input要开始的号码。
-
-
点击重命名。
如果你的文件有一个共同的模式,那么你可以使用replace文本,否则添加文本也可以完成这个工作。
你可以用-i
代替-I {}
ls | xargs -i mv {} unix_{}
这也是完美的。
-
ls
– 列出目录中的所有文件 -
xargs
– 由于-i
选项而逐行接受所有文件 -
{}
是所有文件的占位符,如果xargs
获取两个以上的参数作为input,则是必需的
使用awk:
ls -lrt | grep '^-' | awk '{print "mv "$9" unix_"$9""}' | sh
也适用于具有空格的项目,并忽略目录
for f in *; do [[ -f "$f" ]] && mv "$f" "unix_$f"; done
随着rnm (你将需要安装它):
rnm -ns 'Unix_/fn/' *
要么
rnm -rs '/^/Unix_/' *
PS:我是这个工具的作者。