Linux 自定义从文件夹中删除文件

Linux 自定义从文件夹中删除文件,linux,bash,Linux,Bash,我有一个文件夹,可以找到不同的文件。我想检查它是否包含.gitkeep以外的其他文件,并立即删除它们,保留.gitkeep。我该怎么做?(我是bash的新手)您可以使用find: find /path/to/folder -maxdepth 1 ! -name .gitkeep -delete 和往常一样,有多种方法可以做到这一点,我只是分享一下我对linux所知的一点: 1)find <path-to-the-folder> -maxdepth 1 -type f ! -inam

我有一个文件夹,可以找到不同的文件。我想检查它是否包含.gitkeep以外的其他文件,并立即删除它们,保留.gitkeep。我该怎么做?(我是bash的新手)

您可以使用find:

find /path/to/folder -maxdepth 1 ! -name .gitkeep -delete

和往常一样,有多种方法可以做到这一点,我只是分享一下我对linux所知的一点:

1)find <path-to-the-folder> -maxdepth 1 -type f ! -iname '\.gitkeep' -delete
不建议这样做,因为rm-rf总是一个坏主意(IMO)。您可以将其更改为rm-f(以确保它只在文件而不是目录上工作)

为了安全起见,建议首先对文件列表进行回显,以查看是否准备删除显示的所有文件:

for i in `ls -a | grep -v '\.gitkeep'` ; do echo $i ; done
这将遍历所有与“.gitkeep”不匹配的文件,并逐个删除它们。。。我认为这不是删除文件的最佳方式

3)rm -rf $(ls -a  | grep -v '\.gitkeep')
同样,要小心使用rm-rf,而不是上面的rm-rf,您可以再次执行echo以查找将被删除的文件

我相信还有更多的方法,但只是对各种可能性的一瞥:)

祝你好运

灰烬

================================================================

编辑:

=>当您尝试学习新内容时,手册页是您的朋友,如果您不了解命令的工作原理或它可以采取和执行的选项,请始终查找手册以了解详细信息

男人发现了什么

=>我知道您试图从自己的舒适区学习一些东西,这总是值得称赞的,但stack overflow不喜欢人们在没有研究的情况下提问

如果你做了研究,你应该在你的问题中提到它,让人们知道你自己做了什么来找到答案

一个简单的谷歌搜索或深入研究堆栈溢出问题都会为您的问题提供类似甚至更好的答案。所以要小心:)

预先警告就是预先警告:)

for i in `ls -a | grep -v '\.gitkeep'` ; do echo $i ; done
3)rm -rf $(ls -a  | grep -v '\.gitkeep')