加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

单行Perl命令重命名文件

发布时间:2020-12-16 06:25:08 所属栏目:大数据 来源:网络整理
导读:到目前为止,这个单行剥离一行并重命名文件,但我需要帮助来改变它,以便它剥离我正在寻找数据的行,并删除旧文件扩展名.csv而不是添加到它. (.csv.out).我不确定这是否可以通过单行完成. 相反,它添加了扩展名filename.csv.out 例 test_20110824.csv.out 一内胆
到目前为止,这个单行剥离一行并重命名文件,但我需要帮助来改变它,以便它剥离我正在寻找数据的行,并删除旧文件扩展名.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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读