【问题标题】:Loop through Filenames with spaces Bash using variables循环使用带有空格的文件名 Bash 使用变量
【发布时间】:2019-02-20 18:59:05
【问题描述】:

我正在使用以下脚本来遍历文件夹结构,但是跳过了包含中间空间的文件夹。

for i in $(echo $File_Directory | sed "s/\// /g")
do
    if [ -d $i ]
    then
        echo "$i directory exists."
    else
        echo "Creating directory $i"
        `mkdir $i`
    fi
done

感谢您对此的帮助..

【问题讨论】:

  • 不清楚您要完成什么。为什么要用空格替换路径分隔符(/)?你为什么打电话给mkdir$File_Directory 的内容是什么,你希望循环的每次迭代到底做什么?
  • 如果您打算创建缺少的目录,您可以改用mkdir -p "$path" - 它会创建缺少的目录。
  • 此外,`mkdir $i` 将获取mkdir $i 的输出并尝试将其作为命令运行。
  • 这个脚本不像mkdir -p,因为它试图在当前目录中创建所有组件目录——没有层次结构
  • @glennjackman 是的,但这是故意的,还是显示代码中的另一个错误?

标签: bash shell scripting


【解决方案1】:

在我看来整个循环应该是 mkdir -p "$File_Directory" ...
但是假设他打算将它们全部放在同一个目录中:

$: File_Directory=a/b/c/d/e/f/g
$: ( IFS=/; for d in $File_Directory; do mkdir -p "$d"; done; )

不过,参数解析确实有点快和松散。

【讨论】:

    猜你喜欢
    • 2012-10-23
    • 2014-07-18
    • 2020-08-09
    • 2016-08-21
    • 2012-08-08
    • 2015-12-23
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多