在unix中为循环中的不同文件重命名文件

时间:2014-11-03 07:12:07

标签: shell unix

我的文件如下:

~ls
N1JRN_S001.csv  N1JRN_S002.csv  N1JRN_S003.csv  N1MNY_S001.csv  N1POS_S001.csv

我想用当前日期重命名所有类型的文件,如

03nov14N1JRN_S001.csv
03nov14N1JRN_S002.csv
03nov14N1JRN_S003.csv 

03nov14N1MNY_S001.csv

03nov14N1POS_S001.csv

在循环中如何为每种类型的文件做?

1 个答案:

答案 0 :(得分:0)

这将根据今天的日期重命名当前目录中的所有csv个文件:

today=$(date '+%d%b%y')
for f in *.csv
do
        mv "$f" "$today$f"
done

工作原理:

  • today=$(date '+%d%b%y')

    这将运行格式为date的{​​{1}}命令。这会以+%d%b%y

  • 的形式生成日期
  • 02Nov14

    这会对名称以for f in *.csv; do

  • 结尾的所有文件开始循环
  • .csv

    这会将文件mv "$f" "$today$f"重命名为所需的格式。

  • f

    这标志着done循环结束。

实施例

让我们从包含这些文件的目录开始:

for

让我们运行我们的脚本:

$ ls
N1JRN_S001.csv  N1JRN_S002.csv  N1JRN_S003.csv  N1MNY_S001.csv  N1POS_S001.csv  script.sh

现在已重命名文件:

$ bash script.sh