我有一个文件夹列表,其中一些文件在文件名中有空格。
我需要用_替换空格,但首先,我需要列出条件为ls *_[1-4]*[A-c]*
的文件。过滤文件后,某些文件的空白没有固定位置(前,中,末端位置)。
如何在ls命令后替换空格?
答案 0 :(得分:3)
你don't want to process the output from ls
。只需循环遍历匹配的文件。
for file in *_[1-4]*[A-c]*; do
# Skip files which do not contain any whitespace
case $file in *\ *) ;; *) continue;; esac
echo mv -n "$file" "${file// /_}"
done
echo
是保障措施;如果输出看起来正确,请将其取出。
case
和替换查找空格(ASCII 32);如果您还想匹配标签,换页等,请相应调整。 bash
允许$[\t ]
之类的内容匹配制表符或空格,但这不能移植到其他Bourne shell实现
答案 1 :(得分:0)
我会使用find
列出文件并将结果导管到sed
:
find -maxdepth 1 -type f -name '*_[1-4]*[A-c]*' | sed 's/ /_/g'