使用Shell仅重命名目录中的csv文件

时间:2017-04-29 22:54:25

标签: bash sh

我正在替换目录中扩展名为.csv的文件中的某些内容。有没有办法以不同方式重命名多个文件并使用sed命令。

例如,目录有两个文件,名称为

  1. data_20050523-20170409.csv
  2. data_20050523-20170409FileHeader.csv
  3. 我想使用sed并将两个文件重命名为不同的名称,例如

    1. new_data.csvdata1.csv
    2. new_data_header.csvdata2.csv
    3. 是否可以在Shell脚本中执行此操作?

      DIR=/Users/test/Desktop/NPPES/
      
      cd $DIR
      
      sed 's/","/|/g;s/"/''/g' *.csv
      echo Replace completed
      
      #cd $DIR
      
      #rm $FILE
      #rm *.pdf
      #chmod 777 *.csv
      #echo file removed
      echo Script completed
      

      提前谢谢

1 个答案:

答案 0 :(得分:0)

# Iterate over all csv files in folder
for csv in *.csv; do
    # Generate new name with sed
    new=`echo "$csv" | sed 's/something/something_else/'`
    # Rename csv if new name different
    [ "$new" = "$csv" ] || mv "$csv" "$new"
done

但是还有一个rename实用程序,它可以使用Perl表达式一次完成:

rename 's/something/something_else/' *.csv

问题是有2个rename工具完全不同,util-linux Deb包中的工具不是基于Perl的工具。