GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So finden und löschen Sie Dateien, die einen bestimmten Text in ihrem Namen in Linux enthalten

In dieser Anleitung wird erläutert, wie Sie Dateien finden und löschen, die einen bestimmten Text oder eine Zeichenfolge enthalten in ihren Namen mit dem Befehl find in Linux. Darüber hinaus werden wir auch lernen, wie man Dateien findet und löscht, die "nicht" bestimmten Text in ihren Namen enthalten.

Einführung

Ich habe viele PDF-Dateien, die einige wichtige Linux-Tipps und Tricks enthalten. Ich habe diesen Dateien zur leichteren Identifizierung einen eindeutigen Dateinamen gegeben.

Sagen wir zum Beispiel, ich habe die Dateien, die Konfigurationsdetails des LDAP-Servers enthalten, als ldapconfig.pdf gespeichert , FTP-Konfigurationsdatei als ftpconfig.pdf , Konfigurationsdetails des DHCP-Servers als dhcp_config.pdf , und so weiter.

Die meisten davon habe ich in Artikel umgewandelt und hier in unserem Blog gepostet, damit auch andere Nutzer davon profitieren können.

Das Problem ist, dass diese Dateien viel Speicherplatz verbrauchen. Da ich Hunderte von Dateien habe, möchte ich sie nicht einzeln manuell finden und löschen. Es kann einige Stunden dauern, alle Dateien zu finden und zu löschen.

Während ich nach einer einfachen Lösung suchte, erfuhr ich, dass der Befehl „find“ mir in diesem Fall helfen kann. Nachdem ich die Manpages von find command durchgesehen hatte, fand ich eine geeignete Lösung. Lesen Sie weiter.

1. Suchen und löschen Sie Dateien, die einen bestimmten Text in ihrem Namen enthalten, unter Linux

Sehen Sie sich das folgende Beispiel an. Ich habe die folgenden Dateien in einem Verzeichnis namens "Linux_guides" .

$ 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

Ich habe den Installationsteil abgeschlossen, daher benötige ich die Dateien mit den Wörtern "install" nicht in ihren Dateinamen.

Anstatt die Dateien, die den Ausdruck „install“ enthalten, einzeln zu suchen und zu löschen, können wir sie alle auf einmal mit dem folgenden Befehl löschen:

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

Der obige Befehl löscht alle Dateien mit dem Ausdruck "install" in ihrem Namen und alles andere behalten.

Wenn delete Option nicht verfügbar ist, können Sie einen der folgenden Befehle verwenden:

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

Oder,

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

Sie könnten fragen, ob wir dasselbe tun können, indem wir "rm" verwenden Befehl wie unten:

$ rm *install*

Ja, das wird gehen. Allerdings rm install Der Befehl entfernt alle Dateien, die "install" im Dateinamen enthalten, aus dem aktuellen Verzeichnis und beschwert sich, wenn ein Verzeichnisname "install" enthält .

Aber der "find -type f" Der Befehl sucht rekursiv nur nach Dateien im aktuellen Verzeichnis und allen Unterverzeichnissen.

1.1. Finden Sie Dateien, die einen bestimmten Text in ihrem Namen in Linux enthalten

Wenn Sie Dateien nur finden (nicht löschen) möchten, entfernen Sie einfach die Optionen -delete oder -exec rm {} \; oder -exec rm {} + in den obigen Befehlen.

Der folgende Befehl findet beispielsweise nur die Dateien, die die Zeichenfolge "install" enthalten in ihren Namen:

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

Beispielausgabe:

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

2. Dateien finden und löschen, deren Namen in Linux "keinen" Text enthalten

Sie wissen, wie Sie eine Datei löschen, deren Name einen bestimmten Satz enthält. Sehen wir uns nun an, wie man Dateien findet und löscht, die keinen bestimmten Ausdruck oder String haben in ihren Namen.

Fügen Sie dazu einfach '-not' hinzu Parameter im Find-Befehl wie unten gezeigt.

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

Der obige Befehl löscht nicht die Dateien mit dem Ausdruck "install" in ihrem Namen und lösche alles andere.

Wenn löschen Option nicht verfügbar ist, können Sie einen der folgenden Befehle verwenden:

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

Oder,

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

Weitere Einzelheiten zum Befehl find finden Sie in den Manpages.

$ man find

Schlussfolgerung

Sie wissen jetzt, wie man eine Datei findet, die einen bestimmten Namen in ihrem Namen enthält, und wie man eine Datei löscht, die ein bestimmtes Wort in ihrem Namen hat oder nicht. Dies ist hilfreich, wenn Sie eine große Anzahl von Dateien desselben Typs in einem Verzeichnis löschen möchten.


Linux
  1. So finden Sie bestimmten Text mit GREP unter Linux

  2. So finden und löschen Sie leere Verzeichnisse und Dateien in Unix

  3. So finden und löschen Sie leere Verzeichnisse und Dateien in Linux

  4. Wie kann ich xargs verwenden, um Dateien zu kopieren, deren Namen Leerzeichen und Anführungszeichen enthalten?

  5. Wie löschen Sie Dateien, die älter als ein bestimmtes Datum in Linux sind?

So finden Sie Dateien anhand ihrer Berechtigungen in Linux

So finden und löschen Sie defekte Symlinks in Linux

So finden und löschen Sie leere Verzeichnisse in Linux

So finden Sie Dateien, die eine bestimmte Textzeichenfolge in Linux enthalten

So finden Sie doppelte Dateien in Linux und entfernen sie

So löschen Sie Dateien und Verzeichnisse mit der Linux-Befehlszeile