Trova tutti i file con un nome file che iniziano con una stringa specificata?


149

Ho una directory con circa 100000 file e voglio eseguire alcune funzioni su tutti i file che iniziano con una stringa specificata, che può corrispondere a decine di migliaia di file.

Ho provato

ls mystring*

ma questo ritorna con l'errore bash "Troppi argomenti". Il mio prossimo piano era di usare

find ./mystring* -type f

ma questo ha lo stesso problema.

Il codice deve avere un aspetto simile

for FILE in `find ./mystring* -type f`
do
    #Some function on the file
done

Invece di un forloop, è necessario eseguire il pipe findin while.
In pausa fino a nuovo avviso.

Risposte:


277

uso

find . -name 'mystring*'

10
ed eseguire una funzione "find. -name 'mystring *' -exec [comando]" ad esempio eliminare "find. -name 'mystring *' -exec rm {} \;"
Eldar,

2
Dove {} è un segnaposto per il nome del file :-) (così puoi costruire le tue azioni)
Sergio Tulentsev,

1
Questo sembra restituire tutti i risultati contenenti la stringa? Il
Brian Z,

7
... o find . -iname 'mystring*'per la ricerca senza distinzione tra maiuscole e minuscole.
Frank Nocke,

OP fa riferimento a una singola directory, quindi inserire -maxdepth 1prima del -namelimite per trovare la cartella corrente
jacanterbury

27
ls | grep "^abc"  

ti darà tutti i file che iniziano (che è ciò che l'OP ha richiesto specificatamente) con la sottostringa abc.
Funziona solo sulla directory corrente mentre findfunziona ricorsivamente in sottocartelle.

Per utilizzare findsolo i file che iniziano con la tua stringa, prova

trova . -name 'abc' *


4

Se vuoi limitare la tua ricerca solo ai file che dovresti considerare di usare -type fnella tua ricerca

prova a utilizzare anche -inameper la ricerca senza distinzione tra maiuscole e minuscole

Esempio:

find /path -iname 'yourstring*' -type f

È inoltre possibile eseguire alcune operazioni sui risultati senza segno pipe o xargs

Esempio:

Cerca i file e mostra le loro dimensioni in MB

find /path -iname 'yourstring*' -type f -exec du -sm {} \;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.