【发布时间】:2018-09-06 14:17:38
【问题描述】:
我正在尝试查找某个文件夹和所有子文件夹中的所有文件和文件夹并替换所有特殊字符。所有空格都应替换为点,其他所有内容都应删除。我尝试了几种不同的方法,但是当我使用“mv”时,它似乎并没有保留目录结构,当我使用“rename”和“find”时,它不想递归。
我得到的最接近的是:
for f in **/; do mv "$f" `echo $f | tr " " . | tr -dc '[:alnum:].'`; done
但我认为循环在某处被破坏,因为它将文件名添加在一起并将结果放在父目录中。
【问题讨论】:
-
点也应该删除?
-
您想替换文件名中的所有特殊字符,而不是文件内容,对吧?
-
因为你要删除斜线,它当然不会记住文件夹结构。
-
点应该保留。仅来自文件名的所有特殊字符,正确。
-
什么确切地算作“特殊字符”?例如,
-(连字符)或_(下划线)是否特殊?