从文件名中删除反斜杠的最简单方法

从文件名中删除反斜杠的最简单方法

我有一个类似以下的文件列表,我需要删除反斜杠:

\jskadn.txt
\jsandkjasn5.txt

我尝试运行以下命令,但它不起作用:

rename " \\*.txt" "*.txt"

答案1

  • 使用基于 Perl 的文件重命名:

    $ rename --version
    /usr/bin/rename using File::Rename version 1.10
    

    然后使用sed-style 正则表达式s/pattern/replacement/

    $ rename -vn 's/\\//' \\*.txt
    rename(\jsandkjasn5.txt, jsandkjasn5.txt)
    rename(\jskadn.txt, jskadn.txt)
    
  • 使用util-linux重命名(接受简单pattern replacement参数):

    $ rename.ul --version
    rename.ul from util-linux 2.34
    

    然后:

    $ rename.ul -vn '\' '' \\*.txt
    `\jsandkjasn5.txt' -> `jsandkjasn5.txt'
    `\jskadn.txt' -> `jskadn.txt'
    

    (如果愿意,您可以使用\\代替)。一旦您确信它们正在做正确的事情,请移除 (no-op) 开关。'\'-n

  • 为了完整性,使用mmv

    $ mmv -n '\\*' '#1'
    \jsandkjasn5.txt -> jsandkjasn5.txt
    \jskadn.txt -> jskadn.txt
    
  • 或者一个简单的 shell 循环:

    $ for f in \\*.txt; do echo mv "$f" "${f#?}"; done
    mv \jsandkjasn5.txt jsandkjasn5.txt
    mv \jskadn.txt jskadn.txt
    

    (在这种情况下删除echo)。

相关内容