GNU/Linux >> Znalost Linux >  >> Linux

Jak najít a odstranit soubory, které obsahují konkrétní text v jejich jménech v Linuxu

Tato příručka vysvětluje, jak najít a odstranit soubory, které obsahují konkrétní text nebo řetězec v jejich jménech pomocí příkazu find v Linuxu. Kromě toho se také naučíme, jak najít a odstranit soubory, které „ne“ obsahují ve svých názvech konkrétní text.

Úvod

Mám mnoho souborů PDF, které obsahují některé důležité tipy a triky pro Linux. Dal jsem těmto souborům jedinečný název souboru pro snadnější identifikaci.

Řekněme například, že jsem uložil soubory obsahující podrobnosti o konfiguraci serveru LDAP jako ldapconfig.pdf , konfigurační soubor FTP jako ftpconfig.pdf , podrobnosti o konfiguraci serveru DHCP jako dhcp_config.pdf , a tak dále.

Většinu z nich jsem převedl na články a umístil sem na náš blog, aby z nich měli užitek i ostatní uživatelé.

Problém je v tom, že tyto soubory zabírají hodně místa na disku. Protože mám stovky souborů, nechci je ručně hledat a mazat jeden po druhém. Nalezení a odstranění všech souborů může trvat několik hodin.

Při hledání snadného řešení jsem zjistil, že v tomto případě mi může pomoci příkaz „najít“. Po procházení manuálových stránek příkazu find jsem našel vhodné řešení. Čtěte dál.

1. Najděte a smažte soubory, které obsahují konkrétní text ve svém názvu v systému Linux

Podívejte se na následující příklad. V adresáři s názvem "Linux_guides" mám následující soubory .

$ cd Linux_guides/
$ ls
apache_config.pdf dhcp_config.pdf ldap_config.pdf php_install.pdf
apache_install.pdf ftp_config.pdf mysql_install.pdf

Dokončil jsem instalační část, takže nepotřebuji soubory obsahující slova "install" v jejich názvech souborů.

Namísto hledání a mazání souborů, které obsahují frázi „install“ jeden po druhém, je můžeme odstranit všechny najednou pomocí následujícího příkazu:

$ find -type f -name '*install*' -delete

Výše uvedený příkaz smaže všechny soubory, které mají frázi "install" jejich jménem a vše ostatní si ponechte.

Pokud delete není k dispozici, můžete použít některý z následujících příkazů:

$ find -type f -name '*install*' -exec rm {} \;

Nebo,

$ find -type f -name '*install*' -exec rm {} +

Můžete se zeptat, zda můžeme udělat totéž pomocí "rm" příkaz jako níže:

$ rm *install*

Ano, bude to stačit. Nicméně rm install příkaz odstraní všechny soubory obsahující "install" v názvu souboru z aktuálního adresáře a bude si stěžovat, pokud některý název adresáře obsahuje "install" .

Ale "find -type f" příkaz bude rekurzivně vyhledávat pouze soubory v aktuálním adresáři a všech podadresářích.

1.1. Najděte soubory, které obsahují konkrétní text ve svém názvu v Linux

Pokud chcete pouze najít soubory (ne odstranit), stačí odebrat možnosti -delete nebo -exec rm {} \; nebo -exec rm {} + ve výše uvedených příkazech.

Například následující příkaz najde pouze soubory, které obsahují řetězec "install" v jejich jménech:

$ $ find -type f -name '*install*'

Ukázkový výstup:

./mysql_install.pdf
./apache_install.pdf
./php_install.pdf

2. Najít a odstranit soubory, které „neobsahují“ ve svých názvech konkrétní text v Linux

Víte, jak odstranit soubor, který obsahuje ve svém názvu konkrétní frázi. Podívejme se nyní, jak najít a odstranit soubory, které nemají konkrétní frázi nebo řetězec v jejich jménech.

Chcete-li to provést, stačí přidat '-not' parametr v příkazu find, jak je uvedeno níže.

$ find -type f -not -name '*install*' -delete

Výše uvedený příkaz nebude smazán soubory, které mají frázi "install" jejich jménem a smazat vše ostatní.

Pokud smažete není k dispozici, můžete použít některý z následujících příkazů:

$ find -type f -not -name '*install*' -exec rm {} \;

Nebo,

$ find -type f -not -name '*install*' -exec rm {} +

Další podrobnosti o příkazu find naleznete na manuálových stránkách.

$ man find

Závěr

Nyní víte, jak najít soubor, který ve svém názvu obsahuje konkrétní název, a jak odstranit soubor, který má a nemá ve svém názvu konkrétní slovo. To bude užitečné, když chcete odstranit velké množství souborů stejného typu v adresáři.


Linux
  1. Odstraňte soubory a adresáře podle jejich jmen. Žádný takový soubor nebo adresář?

  2. Jak najít a odstranit prázdné adresáře a soubory v Unixu

  3. Jak najít a odstranit prázdné adresáře a soubory v Linuxu

  1. Jak mohu použít xargs ke kopírování souborů, které mají v názvech mezery a uvozovky?

  2. Příkaz Linux:Jak „najít“ pouze textové soubory?

  3. Jak v Linuxu najdu všechny soubory obsahující konkrétní text?

  1. Jak najít konkrétní text pomocí GREP v systému Linux

  2. Jak v Linuxu odstraníte soubory starší než konkrétní datum?

  3. Jak najdu soubory a součet jejich velikostí?