我必須寫一個unix腳本,我真的不熟悉它,需要幫助。Unix腳本來過濾文件
我有一個根目錄,裏面我有很多其他的目錄。 每個目錄包含txt files
。 我必須要經過的所有目錄和所有文件:
如果文件包含我希望保持 文件短語
"file information"
。如果文件不包含它,我要刪除的文件。
然後,如果一個目錄的所有文件都被刪除了,並且目錄是空的,我想刪除這個目錄。
我該怎麼寫這樣的腳本?
感謝
我必須寫一個unix腳本,我真的不熟悉它,需要幫助。Unix腳本來過濾文件
我有一個根目錄,裏面我有很多其他的目錄。 每個目錄包含txt files
。 我必須要經過的所有目錄和所有文件:
如果文件包含我希望保持 文件短語"file information"
。
如果文件不包含它,我要刪除的文件。
然後,如果一個目錄的所有文件都被刪除了,並且目錄是空的,我想刪除這個目錄。
我該怎麼寫這樣的腳本?
感謝
刪除包含 「STRING」 的所有文件:
rm -rf $(find . -type f -exec grep -l 'STRING' {} \;)
,並刪除所有empry目錄:
find . -empty -type d -delete
UPDATE
從man grep
:
-L,--files-不匹配
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.
-l,--files與 - 比賽
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.)
謝謝。 如何刪除所有不包含「STRING」的文件? – user1439691
將'-l'選項改爲'-L' –
謝謝。找到工作正常,但它不會刪除。它寫入「非法變量名稱」。 也許是因爲文件名是try.txt,並找到返回./try.txt? – user1439691
嘗試什麼.. 。? –
哪個命令查找文件或目錄?哪個命令在文件中找到單詞?什麼選項使命令列表文件名稱? 'rmdir'命令很嘈雜,但不會刪除非空目錄。如果按相反順序對目錄列表進行排序,則可以將列表提供給「rmdir」,它將安全地處理所有空目錄。你如何重定向標準錯誤,所以它不會出現? –