Shell 用于筛选文件的Unix脚本

Shell 用于筛选文件的Unix脚本,shell,unix,Shell,Unix,我必须写一个unix脚本,我真的不熟悉它,需要帮助 我有一个根目录,里面有很多其他目录。 每个目录都包含txt文件。 我必须浏览所有目录和所有文件: 如果文件包含短语file information,我希望保留 文件 如果文件不包含它,我想删除该文件 然后,如果某个目录的所有文件都已删除,则 目录为空,我想删除该目录 我怎么能写这样的剧本呢 感谢删除所有包含字符串的文件: rm -rf $(find . -type f -exec grep -l 'STRING' {} \;) 要删除所有em

我必须写一个unix脚本,我真的不熟悉它,需要帮助

我有一个根目录,里面有很多其他目录。 每个目录都包含txt文件。 我必须浏览所有目录和所有文件:

如果文件包含短语file information,我希望保留 文件

如果文件不包含它,我想删除该文件

然后,如果某个目录的所有文件都已删除,则 目录为空,我想删除该目录

我怎么能写这样的剧本呢


感谢删除所有包含字符串的文件:

rm -rf $(find . -type f -exec grep -l 'STRING' {} \;)
要删除所有empry目录,请执行以下操作:

find . -empty -type d -delete
更新

来自man grep:

-五十、 -不匹配的文件

-l、 -具有匹配项的文件


哪个命令查找文件或目录?哪个命令在文件中查找单词?什么选项使命令列表文件名?rmdir命令有噪声,但不删除非空目录。如果按相反顺序对目录列表进行排序,则可以将该列表提供给rmdir,它将安全地处理所有空目录。如何重定向标准错误使其不出现?谢谢。如何删除所有不包含字符串的文件?将-l选项更改为-Lthanks。“查找”工作正常,但不会删除。它写入非法的变量名。可能是因为文件名是try.txt,而find returns./try.txt?
          Suppress normal output; instead print the name of each input file from which no output would normally  have  been  printed.
          The scanning will stop on the first match.
          Suppress  normal output; instead print the name of each input file from which output would normally have been printed.  The
          scanning will stop on the first match.  (-l is specified by POSIX.)