Verwenden von Platzhaltern zum Suchen (und Löschen) übereinstimmender Dateien auf einer Linux-Box

Verwenden von Platzhaltern zum Suchen (und Löschen) übereinstimmender Dateien auf einer Linux-Box

Ich möchte für jeden Benutzer auf der Box eine spezielle Konfigurationsdatei für Awstats löschen. Wie kann ich sie am besten löschen, und zwar möglichst in einer Zeile?

Alle Dateien liegen unter /homefolgender Struktur:

/home/{username1}/domains/{domain1}/public_html/awstats/.data/awstats.{domain1}.conf
/home/{username1}/domains/{domain2}/public_html/awstats/.data/awstats.{domain2}.conf

/home/{username2}/domains/{domain1}/public_html/awstats/.data/awstats.{domain1}.conf

Einige /home/{username}/domains/Ordner haben mehrere Domänenunterordner.

Antwort1

Hast du es versucht

rm /home/*/domains/*/public_html/awstats/.data/awstats.*.conf

?

Achtung: Wenn eine Datei vorhanden ist, deren Name etwa so lautet:

/home/phred/domains/sci-fi/public_html/awstats/.data/awstats.fantasy.conf

d. h., die beiden Vorkommen von {domain1}stimmen nicht überein, dann wird es durch den obigen Befehl ebenfalls gelöscht. Ist das ein Problem?

PS Sofern Sie nicht nach der Überprüfung der beiden Vorkommen von {domain1}match fragen oder mir etwas anderes fehlt, geht es in dieser Frage nicht um reguläre Ausdrücke (regexs). Wenn *, ?, und [(mit einem passenden ]) in der Shell-Befehlszeile verwendet werden, werden sie aufgerufenPlatzhalter.

Antwort2

Führen Sie /homeden folgenden Befehl aus

find . -name 'awstats*conf' | xargs rm

Bevor Sie das Ergebnis an weiterleiten, xargsführen Sie es find . -name 'awstas*.confalleine aus, um sicherzustellen, dass nur die Dateien aufgelistet werden, die Sie entfernen möchten. Leiten Sie es xargs rmerst weiter, nachdem Sie dies bestätigt haben.

Bei findVerwendung wie oben gezeigt wird rekursiv nach Dateien gesucht, die dem angegebenen regulären Ausdruck entsprechen. Weitere Informationen finden Sie in den Manpages für find und xargs.

verwandte Informationen