O / S = Fedora Code 9。
我有一些隐藏在我的LANG = en_US:UTF-8文件系统中的文件,这些文件系统已经被上传了无法识别的文件名。
我需要search文件系统并返回至less有一个字符不在标准范围内的所有文件名(a-zA-Z0-9和。-_等)
我一直在试图追随,但没有运气。
bash – 如何从bash脚本内传递一个换行到perl?
HAProxy和URL重写configuration
检查string是否可以在Linux和Windows上的FS中的path
连字符和撇号字符 – 不同语言的相同ASCII码?
如何在bash脚本中存储“time”函数输出的子string
find . | egrep [^a-zA-Z0-9_./-s]
所有的build议将受到欢迎。
干杯,
AP。
如何join文件的前n行
在mod_rewrite正则expression式中使用escape(。)字符
用sed多次在同一行执行命令
.htaccess mod-rewrite apache混淆导致每天10k 404的结果
Nginx – 正则expression式 – search非字母数字的整个位置
convmv可能对你很有意思。 它不只是找到这些文件,而且还支持将它们重命名为正确的文件名(如果它可以猜测出了什么问题)。
find . | perl -ane '{ if(m/[[:^ascii:]]/) { print } }'
找 。 | egrep [^ a-zA-Z0-9 _./- s]
危险,壳逃跑!
bash将解释最后一个参数,删除一级反斜杠转义。 尝试在“[^ group]”表达式周围加双引号。
当然这也不能比UTF-8更多。 构建一个正则表达式来匹配有效的UTF-8字符串是可能的 ,但是相当难看。 如果你有Python 2.x可用,你可以利用这一点:
import os.path def walk(dir): for child in os.listdir(dir): child= os.path.join(dir,child) if os.path.isdir(child): for descendant in walk(child): yield descendant yield child for path in walk('.'): try: u= unicode(path,'utf-8') except UnicodeError: # print path,or attempt to rename file
我也遇到类似的问题,我给了超级用户的一个解决方案 (另见进一步的评论 ),我发现比“convmv解决方案”更令人满意,虽然我也很欣赏发现了comvmv。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。