Finden von Dateien und ausführen von Befehlen
Habe ich eine Menge rar-Archive strukturiert in einzelnen Ordnern und möchte Sie auf Skript entpacken Sie alle.
Ich habe Probleme, herauszufinden, wie es getan werden sollte, und brauche etwas Hilfe.
#!/bin/bash
## For all inodes
for i in pwd; do
## If it's a directory
if [ -d "$i" ] then
cd $i
## Find ".rar" file
for [f in *.rar]; do
./bin/unrar x "$f" # Run unrar command on filename
cd ..
done
done
done
Ich bin nicht vertraut mit der bash-scripting-und ich vermute, der code ist falsch, mehr als einmal. Aber ich denke, dies sollte die grundlegende Struktur
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die
finden
Befehl:find
bietet die Möglichkeitexec
der ausgeführt wird, der Befehl für jede Datei, die gefunden wurde.find
in der Art habe ich es gepostet wird verhindern, die Sie von zu viele offene Datei-Fehler. Ich denke, du hast so etwas wiefind foo* ...
, das heißt, Sie haben glob für den Verzeichnis-Namen (oder etwas anderes, ich bin mir nicht bewusst). Fühlen Sie sich frei, um eine Frage stellen über Ihr spezielles problem. Drop den link zu der Frage hier und ich werde sehen es.for i in 'ls /var/cpanel/users/';
. Es solltefor i in /var/cpanel/users/*
"*.jpg"
- die unquoted, es zu betrachten. Es wird erweitert, um alle jpg-Dateien in diesem Ordner was löst den Fehler zu finden. Der Befehl, den du suchst, ist:for i in /var/cpanel/users/*; do sudo -H -u "$i" find "/home/$i/public_html" -type f -name '*.jpg' -execdir jpegoptim {} \; ; done
Brauchen Sie nicht ein Skript.
Zusätzlich, Sie könnte übergeben Sie die Ergebnisse des
unrar
Befehl.