到目前为止,这个单行剥离一行并重命名文件,但我需要帮助来改变它,以便它剥离我正在寻找数据的行,并删除旧文件扩展名.csv而不是添加到它. (.csv.out).我不确定这是否可以通过单行完成.
相反,它添加了扩展名filename.csv.out
例
test_20110824.csv.out
一内胆:
find -type f -name '*.csv' -exec perl -i.out -wlne '/^Data for/ or print' {} \;
我想替换扩展名:
test_20110824.out
解决方法
perl -MFile::Copy -we 'for (glob "*.csv") { my ($name) = /^(.+).csv/i; move($_,$name . ".out"); }'
要删除与以下数据匹配的标头:
perl -MFile::Copy -MTie::File -wE 'for (glob '*x.csv') { tie my @file,"Tie::File",$_ or die $!; shift @file if $file[0] =~ /^Data for/; untie @file; my ($name) = /^(.*).csv/i; move($_,$name . ".out"); }'
但那时它真的不再是单行了…
use strict; use warnings; use Tie::File; use File::Copy; use autodie; for (@ARGV) { tie my @file,$_; shift @file if $file[0] =~ /^Data for/; untie @file; my ($name) = /^(.*).csv/i; move($_,$name . ".out"); }
并使用:
$script.pl *.csv