%20und%20verschiebe%20dann%20alle%20diese%20Dateien%20in%20einen%20bestimmten%20Ordner%3F.png)
Sagen wir - was wäre, wenn ich jede HTML-Datei in mehreren unabhängigen Verzeichnissen mit dem Wort „heavengames“ im Dateinamen (und als zweite Frage, jede HTML-Datei mit dem Wort „heavengames“ im Text) in ein neues Verzeichnis mit dem Namen „heavengames-threads“ verschieben wollte?
Antwort1
So verschieben Sie Dateien mit diesem Wort im Namen:
find /path/to/dir1 /path/to/dir2 /and/so/on -type f -iname "*heavengames*" \
-exec mv -t /path/to/heavengames-threads {} \+
So verschieben Sie Dateien mit einem Wort im Textkörper:
find /path/to/dir1 /path/to/dir2 /and/so/on -type f -exec grep -q heavengames {} \; \
-exec mv -t /path/to/heavengames-threads {} \+
PS: Um zu prüfen, ob alles korrekt ist, fügen Sie echo
es mv
beim ersten Durchlauf hinzu.
Antwort2
In zsh oder bash ≥4, basierend auf dem Dateinamen:
mkdir heavengames-threads
mv **/*heavengames*.html heavengames-threads/
Für mehr Flexibilität (zum Beispiel um die Verzeichnishierarchie neu zu erstellen, siehezmv
(es gibtviele Beispiele auf dieser Site).
Verwenden Sie diese Option grep
, um den Dateiinhalt zu durchsuchen. Mit aktuellen Versionen von GNU-Dienstprogrammen (d. h. unter nicht eingebettetem Linux oder Cygwin):
grep -RZ heavengames . | xargs -0 mv -t heavengames-threads/
Für portablere Befehle verwenden Sie find
. SieheRushs Antwort.