包含逗号“,”和空格的文件夹路径的循环列表会导致错误

时间:2016-12-31 00:46:18

标签: bash for-loop

下面的代码工作得很好但是当文件夹路径包含“,”和空格时出错

dir data/ > folder_file.txt

   IFS=$'\n'
for file in "`cat folder_file.txt`"
do
printf 'File found: %s\n' "$file" 
ls  "data/$file/" #-----------> "," and "space" brook this task

done

任何想法?逃避特殊性格

现在任何其他建议都可以让它变得更好

 IFS=$'\n'
 a=0


 for file in out/*; do

 ls "$file" > html_file.txt


 for file2 in `cat html_file.txt`; do

 echo $file
 mv "$file""/""$file2" "$file""/""page_"$a
 let a=$a+1

  done
  a=0
  done

1 个答案:

答案 0 :(得分:0)

这是循环目录内容的方式:

#!/bin/bash

shopt -s nullglob

for file in data/*; do
    printf 'File found: %s\n' "$file"
    ls "$file"
done

我们使用shell选项nullglob,以便在没有匹配的情况下,glob *扩展为空(因此循环无效)。