Linux
perl + 將 exec 命令與 perl 單行組合
我有以下簡短的 perl 腳本
rename.pl
。如何將此腳本轉換為一種襯裡 perl 語法?以及如何在find
命令中結合 perl 一個班輪?
rename.pl
#!/usr/bin/perl $op = shift; for (@ARGV) { $was = $_; eval $op; die $@ if $@; rename($was,$_) unless $was eq $_; }
我目前的
find
語法:find /tmp -name "*$NAME*" -exec \ ./rename.pl \ 's/\Q$ENV{NAME_THAT_WE_WANT_TO_CHANGE}\E/$1$ENV{NEW_NAME}$2/' {} +
find
我要建構的語法:find /tmp -name "*$NAME*" -exec \ < perl one liner line ....... > \ 's/\Q$ENV{NAME_THAT_WE_WANT_TO_CHANGE}\E/$1$ENV{NEW_NAME}$2/' {} +
只需將腳本的內容作為參數提供如下
-e
:find .... -exec perl -e ' $op = shift; for (@ARGV) { $was = $_; eval $op; die $@ if $@; rename($was,$_) unless $was eq $_; }' s/a/b/g {} +
您可以將其壓縮為:
find ... -exec perl -e '$op=shift;for(@ARGV){$was=$_;eval$op;die$@if$@;rename$was,$_ unless$was eq$_}' s/a/b/g {} +
但這無助於易讀性。