我的iomega NAS使用类似Linux的操作系统,上面有一堆备份文件,文件名包含双引号。像这样:
"水&#34 -4
"水" -5
等。 (不要问他们是如何到达那里的;他们最初是在Mac上创建的)
当我尝试将文件复制到备份驱动器时,这会导致问题:引号显然导致副本失败。 (内置复制工具使用rsync,但是版本相当旧。)
是否有终止命令批量重命名这些文件,只是删除引号?如果失败了,是否有命令一次重命名一个?引号似乎真的搞砸了(我知道:用户已被警告!)
答案 0 :(得分:1)
简单的单行bash代码:
for f in *; do mv -i "$f" "${f//[\"[:space:]]}"; done
$f
是您当前的文件名,${f//[\"[:space:]]}
是您的bash子字符串替换器,代表:
在此f
(文件名),//
(替换)这些[\"[:space:]]
(字符)没有任何东西[1]。
注1:字符串替换语句:${string//substring/replacement}
;因为您不需要将子字符串替换为空,所以将/replacement
留空。
注2:[\"[:space:]]
是expr
正则表达式。
答案 1 :(得分:0)
您可以循环播放文件并使用mv
:
for i in *
do
mv "$i" "`echo $i | sed 's/"//'`"
done
答案 2 :(得分:0)
尝试这样做:
$ rename -n 's/"//' *Water*
并在测试完成后删除-n
开关。
请注意,您需要rename的perl版本,有时安装的其他版本取决于您的发行版。如果您还没有,请尝试搜索prename
或访问https://metacpan.org/pod/distribution/File-Rename/rename.PL