首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将文件内容传递给extglob命令终端

将文件内容传递给extglob命令终端
EN

Stack Overflow用户
提问于 2016-04-03 10:36:32
回答 2查看 174关注 0票数 1

我有一个不想从某个位置删除的文件列表,我发现通过使用extglob,我可以使用以下方法保留一个预定义的文件列表:

代码语言:javascript
复制
rm -r !(one.txt|Folder)

这将删除除one.txt和文件夹Folder之外的所有内容,但是我希望保留的文件列表并不总是相同的。

有没有办法从一个文件中传递一个文件/文件夹的列表,例如不会被删除的whitelist.txt

我设法重新格式化了whitelist.txt,使其具有以下内容:

代码语言:javascript
复制
one.txt|two.txt|Folder

但是,我不知道如何将它传递到命令中。

只是我在运行OSX 10.11的便条。

谢谢,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-03 10:47:14

由于路径名展开的时间比命令替换晚,所以可以将这两者结合起来:

代码语言:javascript
复制
shopt -s extglob
rm !($(< whitelist.txt))
票数 1
EN

Stack Overflow用户

发布于 2016-04-03 10:45:57

您可以通过一些技巧来使用GLOBIGNORE

代码语言:javascript
复制
GLOBIGNORE="$(tr '\n' ':' <file.txt)"

假设file.txt包含由换行符分隔的文件名。当然,不要忘记将file.txt添加到自身。

对于|分隔的名称:

代码语言:javascript
复制
GLOBIGNORE="$(tr '|' ':' <file.txt)"

现在你可以:

代码语言:javascript
复制
rm *

file.txt中提到的文件外,所有文件都将被删除。

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

https://stackoverflow.com/questions/36384376

复制
相关文章

相似问题

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