在一个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 。 我也复制了下面的步骤,

重命名多个项目

  1. select项目,然后按住Control键点按其中一个项目。

  2. 在快捷菜单中,select重命名项目。

  3. 在“重命名文件夹项目”下的popup式菜单中,selectreplace名称中的文本,将文本添加到名称或更改名称格式。

    • replace文本:在“查找”字段中input要删除的文本,然后在“replace为”字段中input要添加的文本。

    • 添加文本:在字段中input要添加的文本,然后select在当前名称之前或之后添加文本。

    • 格式:为文件select名称格式,然后select在名称前后放置索引,计数器或date。 在“自定义格式”字段中input名称,然后input要开始的号码。

  4. 点击重命名。

如果你的文件有一个共同的模式,那么你可以使用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:我是这个工具的作者。