![从文件名中删除反斜杠的最简单方法](https://linux22.com/image/938980/%E4%BB%8E%E6%96%87%E4%BB%B6%E5%90%8D%E4%B8%AD%E5%88%A0%E9%99%A4%E5%8F%8D%E6%96%9C%E6%9D%A0%E7%9A%84%E6%9C%80%E7%AE%80%E5%8D%95%E6%96%B9%E6%B3%95.png)
我有一个类似以下的文件列表,我需要删除反斜杠:
\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
)。