Ich habe ein Verzeichnis mit ungefähr 100000 Dateien und möchte eine Funktion für alle Dateien ausführen, die mit einer angegebenen Zeichenfolge beginnen, die möglicherweise mit Zehntausenden von Dateien übereinstimmt.
Ich habe versucht
ls mystring*
Dies gibt jedoch den Bash-Fehler 'Zu viele Argumente' zurück. Mein nächster Plan war zu verwenden
find ./mystring* -type f
Dies hat jedoch das gleiche Problem.
Der Code muss ungefähr so aussehen
for FILE in `find ./mystring* -type f`
do
#Some function on the file
done
for
Schleife, sollten Sie Rohrfind
inwhile
.Antworten:
verwenden
quelle
find . -iname 'mystring*'
für die Suche ohne Berücksichtigung der Groß- und Kleinschreibung.-maxdepth 1
vor dem ein-name
, um die Suche auf den aktuellen Ordner zu beschränkenSie erhalten alle Dateien, die mit dem Teilstring beginnen (was das OP speziell benötigt)
abc
.Es wird nur im aktuellen Verzeichnis ausgeführt, während es
find
rekursiv in Unterordnern ausgeführt wird.Zur Verwendung
find
für nur Dateien beginnend mit der Zeichenfolge tryquelle
Wenn Sie Ihre Suche nur auf Dateien beschränken möchten, sollten Sie diese
-type f
bei Ihrer Suche verwendenVersuchen Sie, die
-iname
Suche auch ohne Berücksichtigung der Groß- und Kleinschreibung zu verwendenBeispiel:
Sie können auch einige Operationen an Ergebnissen ohne Pipe-Zeichen oder Xargs ausführen
Beispiel:
Suchen Sie nach Dateien und zeigen Sie deren Größe in MB an
quelle