加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

BASH:如何清除清单中命名的文件之外的所有文件?

发布时间:2020-12-15 18:47:50 所属栏目:安全 来源:网络整理
导读:我有一个清单文件,它只是一个换行符分隔的文件名的列表.如何从文件夹中删除清单中未命名的所有文件? 我试图建立一个find ./! -name“filename”命令动态地: command="find ./ ! -name "MANIFEST" "for line in `cat MANIFEST`; do command=${command}"!
我有一个清单文件,它只是一个换行符分隔的文件名的列表.如何从文件夹中删除清单中未命名的所有文件?

我试图建立一个find ./! -name“filename”命令动态地:

command="find ./ ! -name "MANIFEST" "
for line in `cat MANIFEST`; do
    command=${command}"! -name "${line}" " 
done
command=${command} -exec echo {} ;
$command

但文件仍然存在.

[注意]我知道这使用回声.我想检查我的命令在使用它之前.

解决方案:(感谢PixelBeat)

ls -1 > ALLFILES
sort MANIFEST MANIFEST ALLFILES | uniq -u | xargs rm

没有临时文件:

ls -1 | sort MANIFEST MANIFEST - | uniq -u | xargs rm

两者都忽略文件是否排序/不.

使用 http://www.pixelbeat.org/cmdline.html#sets中的“设置差异”模式
(find ./ -type f -printf "%Pn"; cat MANIFEST MANIFEST; echo MANIFEST) |
  sort | uniq -u | xargs -r rm

注意我列出了两个MANIFEST,以防在那里列出的文件实际上不存在.还要注意以上支持子目录中的文件

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读