列表文件使用带有条件的ls和只有空格的进程/ grep文件

时间:2016-06-23 07:15:06

标签: bash ls

我有一个文件夹列表,其中一些文件在文件名中有空格。 我需要用_替换空格,但首先,我需要列出条件为ls *_[1-4]*[A-c]*的文件。过滤文件后,某些文件的空白没有固定位置(前,中,末端位置)。 如何在ls命令后替换空格?

2 个答案:

答案 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'