Elenca le cartelle che contengono più di due file oltre la dimensione di x - riga di comando


0

Ancora meglio è se riesce a trovare le directory che hanno più di due file escludendo determinati tipi di file.

Risposte:


1

Se i nomi dei file non contengono caratteri di nuova riga, in seguito vengono trovate tutte le directory con due o più file con dimensioni pari a 100k:

find . -type f -size +100k | sed -r 's|/[^/]*$||' | sort | uniq -d

Per quanto riguarda "l'esclusione di determinati tipi di file" find ha molte molte opzioni per questo.

Se uno ha le versioni più recenti di sed installato, quindi l'approccio sopra può essere esteso per gestire i nomi di file ostili. In alternativa, se ne hai uno bash versione 4 disponibile, quindi utilizzare:

declare -A a
find . -type f -size +100k -print0 | while IFS= read -r -d '' fname
do
    dir="$(dirname "$fname")"
    ((a["$dir"]++))
    [[ "${a["$dir"]}" -eq 2 ]] && echo "$dir"
done

0

Non sono molto bravo con gli script di shell, ma qualcosa di simile dovrebbe stampare le directory che hanno più di due file con dimensioni di X byte o più grandi

#!/bin/sh

for DIR in foo bar; do
    if [ `find $DIR -mindepth 1 -size +Xc | wc -l` -gt 2 ]; then
        echo $DIR
    fi
done

Non sono sicuro di cosa intendi

trova le directory che hanno più di due file escludendo determinati tipi di file

ma puoi escludere i file con determinate stringhe con -not -name 'foo'


0

Questa è la stessa risposta di @ John1024 ma è sicura per tutti i possibili nomi di percorso e restituisce la shell dei nomi quotata.

find . -type f -size +100k -print0 | xargs -0 dirname -z | sort -z | uniq -d -z | xargs -0 ls -d --quoting-style=shell

L'unico miglioramento che so sarebbe di aiuto se ci fosse un comando che ha preso zero le linee terminate shell li ha citati e li ha stampati con linee nuove che potrebbero essere usate piuttosto che abusare ls.

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.