我有一个不想从某个位置删除的文件列表,我发现通过使用extglob,我可以使用以下方法保留一个预定义的文件列表:
rm -r !(one.txt|Folder)这将删除除one.txt和文件夹Folder之外的所有内容,但是我希望保留的文件列表并不总是相同的。
有没有办法从一个文件中传递一个文件/文件夹的列表,例如不会被删除的whitelist.txt?
我设法重新格式化了whitelist.txt,使其具有以下内容:
one.txt|two.txt|Folder但是,我不知道如何将它传递到命令中。
只是我在运行OSX 10.11的便条。
谢谢,
发布于 2016-04-03 10:47:14
由于路径名展开的时间比命令替换晚,所以可以将这两者结合起来:
shopt -s extglob
rm !($(< whitelist.txt))发布于 2016-04-03 10:45:57
您可以通过一些技巧来使用GLOBIGNORE:
GLOBIGNORE="$(tr '\n' ':' <file.txt)"假设file.txt包含由换行符分隔的文件名。当然,不要忘记将file.txt添加到自身。
对于|分隔的名称:
GLOBIGNORE="$(tr '|' ':' <file.txt)"现在你可以:
rm *除file.txt中提到的文件外,所有文件都将被删除。
https://stackoverflow.com/questions/36384376
复制相似问题