我正在编写一个需要解析文件名的bash脚本.
它需要删除所有特殊字符(包括空格):"!?.-_,并将所有大写字母改为小写.比如:
Some_randoM data1-A
More Data0
致:
somerandomdata1a
moredata0
我在许多不同的编程语言中看到了很多这样做的问题,但在bash中没有.有什么好办法吗?
我正在编写一个需要解析文件名的bash脚本.
它需要删除所有特殊字符(包括空格):"!?.-_,并将所有大写字母改为小写.比如:
Some_randoM data1-A
More Data0
致:
somerandomdata1a
moredata0
我在许多不同的编程语言中看到了很多这样做的问题,但在bash中没有.有什么好办法吗?
cat yourfile.txt | tr -dc '[:alnum:]\n\r' | tr '[:upper:]' '[:lower:]'
前tr
个删除特殊字符.d
表示删除,c
表示补码(反转字符集).所以,-dc
表示删除除指定字符外的所有字符.包含\n
和\r
是为了保留linux或windows风格的换行符,我想这是您想要的.
第二种是将大写字符转换为小写.