我正在替换目录中扩展名为.csv的文件中的某些内容。有没有办法以不同方式重命名多个文件并使用sed命令。
例如,目录有两个文件,名称为
data_20050523-20170409.csv
data_20050523-20170409FileHeader.csv
我想使用sed并将两个文件重命名为不同的名称,例如
new_data.csv
或data1.csv
new_data_header.csv
或data2.csv
是否可以在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
提前谢谢
答案 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的工具。