mpu3$ echo * | xargs -n 1 -I {} | tr "|" "/n"
输出:
@.txt
ag.txt
bg.txt
bh.txt
bi.txt
bid.txt
dh.txt
dw.txt
er.txt
ha.txt
jo.txt
kc.txt
lfr.txt
lg.txt
ng.txt
pb.txt
r-c.txt
rj.txt
rw.txt
se.txt
sh.txt
vr.txt
wa.txt
是我到目前为止所拥有的。缺少的是输出;我没有。我真正想要的是获取一个txt文件列表,使用他们的名称到扩展名,处理出“|”并用LF / CR替换它,并将新文件作为[old-name] .ics放在另一个目录中。 HALP。 THX提前。 - 白痴我
答案 0 :(得分:0)
您可以遍历文件并使用sed
来处理文件:
for i in *.txt; do
sed -e 's/|/\n/g' "$i" > other_directory/"${i%.txt}".ics
done
无需使用xargs
,尤其是使用echo
会导致文件名出现分词并对其进行分组处理的风险,因此可能会做错事。
然后我们使用sed
并使用s
替换|
\n
g
使其成为全局替换。我们将其重定向到您想要的其他导演,并使用bash
的参数展开从最后剥离.txt
答案 1 :(得分:0)
这是一个awk解决方案:
$ awk '
FNR==1 { # for first record of every file
close(f) # close previous file f
f="path_to_dir/" FILENAME # new filename with path
sub(/txt$/,"ics",f) } # replace txt with ics
{
gsub(/\|/,"\n") # replace | with \n
print > f }' *.txt # print to new file