如何使用awk删除文件名中的额外字符

时间:2013-11-26 09:23:02

标签: awk

我正在尝试从多个文件名中删除多余的字符\。有没有办法做到这一点?比提前。令人惊讶的是,当我输入ls -l时,我没有在文件名中看到反斜杠。

输入

文件1

asg19.mail14_+_\:38033421-38033567.mail

file2的

asg19.mail14_+_\:38088821-38033567.mail

输出

文件1

asg19.mail14_+_:38033421-38033567.mail

file2的

asg19.mail14_+_:38088821-38033567.mail

2 个答案:

答案 0 :(得分:1)

我在这里看不到会有什么帮助,但以下代码段应该有效:

for file in *\\*; do
    mv "${file}" "${file/\\/_}"
done

你只需要用另一个反斜杠来逃避反斜杠。

此代码适用于名称为

的文件
asg19.mail14_+_\:38033421-38033567.mail

但你说在做ls -l时没有看到反斜杠,而我确实看到了。

答案 1 :(得分:1)

这将抑制file1,file2,...中字符串的所有反斜杠:

tmp=$(mktemp)
for file in file1 file2
do
    awk '{gsub("\\\\","");print}' $file > $tmp
    cat $tmp > $file
done