首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理数组中包含空格的文件和目录列表

处理数组中包含空格的文件和目录列表
EN

Stack Overflow用户
提问于 2012-09-28 02:22:45
回答 2查看 189关注 0票数 0

如何最好地处理数组中文件和目录的混合。我需要创建一个由文件和文件夹组成的数组,循环遍历该数组,并将该数组中的每一项都应用于带有-rf选项的rm命令:

代码语言:javascript
复制
#Build array of files to be deleted

FILES=(
"~/Library/Preferences/Adobe InDesign"
"~/Library/Caches/Adobe InDesign"
"~/Library/Saved Application State/com.adobe.InDesign.savedstate"
)


#Loop through array deleting each file/directory with the recursive force options

    for i in "${FILES[@]}"

      do

        rm -rf "$i"

      done

    exit
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-28 06:35:54

问题不在于数组或空格,而在于文件路径中的~~实际上不是路径的有效部分,但外壳程序会将其替换为主目录的路径...除非它在引号中:

代码语言:javascript
复制
$ echo ~/Library/Preferences/Adobe InDesign
/Users/gordon/Library/Preferences/Adobe InDesign
$ echo "~/Library/Preferences/Adobe InDesign"
~/Library/Preferences/Adobe InDesign

因此,您可以将~放在引号之外:

代码语言:javascript
复制
FILES=(
~/"Library/Preferences/Adobe InDesign"
~/"Library/Caches/Adobe InDesign"
~/"Library/Saved Application State/com.adobe.InDesign.savedstate"
)

或者使用$HOME (用双引号将其替换):

代码语言:javascript
复制
FILES=(
"$HOME/Library/Preferences/Adobe InDesign"
"$HOME/Library/Caches/Adobe InDesign"
"$HOME/Library/Saved Application State/com.adobe.InDesign.savedstate"
)
票数 2
EN

Stack Overflow用户

发布于 2012-09-28 04:12:00

我有时会用到这个技巧:

代码语言:javascript
复制
with_expanded_paths()
{
  typeset IFS
  IFS=""
  "$@"
}
with_expanded_paths rm -rf "~/file with spaces"

我是从内存中写的,所以可能需要做一些细微的调整。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12627776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档