problema sul numero di link

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
sbcarl1
Prode Principiante
Messaggi: 6
Iscrizione: mercoledì 23 giugno 2021, 11:58
Desktop: Ubuntu
Distribuzione: Ubuntu 18.10

problema sul numero di link

Messaggio da sbcarl1 »

Ciao a tutti,
devo listare i file semplici della home directory con utente proprietario che può solo leggere e scrivere e con un numero di link superiore a 5. Ho utilizzato questo comando: ls -l ~/ | grep -E '^-rw-.{6}\s([6-9]|[[:digit:]]{2,})'. Secondo voi va bene? Vi chiedo conferma perchè nella mia home directory il massimo numero di link è 2.
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4444
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: problema sul numero di link

Messaggio da UbuNuovo »

Devi trovare file con 5 o più hard link, mi pare.
Devi usare grep? Con awk basterebbe verificare $2.
I primi spazi possono essere uno o più quindi \s+ (io ne vedo 3), fai prima a scrivere [0-9] che [[:digit:]] e se usi l'opzione -P puoi usare \d

Codice: Seleziona tutto

grep -E '^-rw-.{6}\s+([5-9]\s|[0-9]{2,}\s)'

Codice: Seleziona tutto

grep -P '^-rw-.{6}\s+([5-9]\s|\d{2,}\s)'
edit: Ho riguardato il codice, meglio evitare ripetizioni:

Codice: Seleziona tutto

grep -E '^-rw-.{6}\s+([5-9]|[[:digit:]]{2,})\s' ls.txt # ok

Codice: Seleziona tutto

grep -P '^-rw-.{6}\s+([5-9]|\d{2,})\s' ls.txt
con AWK:

Codice: Seleziona tutto

awk '/^-rw-/ && $2>=5'
Salva l'Ucraina! 🇺🇦
sbcarl1
Prode Principiante
Messaggi: 6
Iscrizione: mercoledì 23 giugno 2021, 11:58
Desktop: Ubuntu
Distribuzione: Ubuntu 18.10

Re: problema sul numero di link

Messaggio da sbcarl1 »

Grazie per i consigli. Adesso però ti devo fare una domanda strana e forse un pò stupida, ti chiedo scusa in anticipo, però voglio capire questa cosa: quando digito ls -l il terminale mostra le varie info su ACL, nro di hard link ecc.., dove ogni colonna è separata da uno spazio però nel comando da te scritto è indicato il numero di occorrenze per gli spazi (ad esempio quelli che separano la colonna dell'ACL dal numero di link). Il numero di spazi quindi lo devo indicare quando la colonna successiva è formata da soli numeri? Spero di essere stato chiaro e scusa la lunghezza
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4444
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: problema sul numero di link

Messaggio da UbuNuovo »

Prova ad incollare l'output del comando in un editor di testo e imposta la visualizzazione degli spazi.
Io vedo due o tre spazi tra permessi e hard link, uno spazio è usato tra nome utente e gruppo.

Codice: Seleziona tutto

-rw-rw-r--   1 ubunuovo ubunuovo  223869 gen 
-rw-rw-r--   1 ubunuovo ubunuovo    3445 feb 
drwxrwxr-x   5 ubunuovo ubunuovo    4096 apr 
drwx------   5 ubunuovo ubunuovo    4096 apr 
drwxr-xr-x   2 ubunuovo ubunuovo    4096 apr 
drwxrwxr-x  39 ubunuovo ubunuovo    4096
Salva l'Ucraina! 🇺🇦
sbcarl1
Prode Principiante
Messaggi: 6
Iscrizione: mercoledì 23 giugno 2021, 11:58
Desktop: Ubuntu
Distribuzione: Ubuntu 18.10

Re: problema sul numero di link

Messaggio da sbcarl1 »

Va bene grazie
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: problema sul numero di link

Messaggio da crap0101 »

sembra un lavoro per find

Codice: Seleziona tutto

rap0101@orange:/tmp/foo$ find . -type f -printf "%n %p\n" #| awk -F' ' '$1 >= 5 {print $2}'
7 ./bar5.py
1 ./__pycache__/random.cpython-38.pyc
7 ./bar7.py
7 ./bar4.py
7 ./bar2.py
1 ./random.pyc
7 ./bar3.py
1 ./random.py
7 ./bar.py
1 ./bar.py~
7 ./bar6.py
crap0101@orange:/tmp/foo$ find . -type f -printf "%n %p\n" | awk -F' ' '$1 >= 5 {print $2}'
./bar5.py
./bar7.py
./bar4.py
./bar2.py
./bar3.py
./bar.py
./bar6.py
...e awk, poi magari si riesce anche solo con find
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: problema sul numero di link

Messaggio da vaeVictis »

crap0101 ha scritto:
domenica 27 giugno 2021, 23:28
poi magari si riesce anche solo con find
Se ho capito cosa intendete l'OP e tu, si può usare l'opzione -links di find.
Con

Codice: Seleziona tutto

-links N
si ottengono solo risultati che abbiano un numero di link pari a N.
Negandola con !, si ottengono i risultati che abbiano un numero di link diverso da N.

Quindi per trovare i file, contenuti ricorsivamente all'interno della directory in cui si lancia il comando, e con un numero di link strettamente maggiore di 5:

Codice: Seleziona tutto

 find . -type f $(echo  \!\ -links\ {1..5})
Per gestire anche i permessi (come da primo messaggio della discussione), basta aggiungere:

Codice: Seleziona tutto

-perm -u=rw ! -perm -u=x
Quindi:

Codice: Seleziona tutto

 find . -type f $(echo  \!\ -links\ {1..5}) -perm -u=rw ! -perm -u=x
Se vuole solo i file all'interno della directory e non quelli delle sottodirectory (quindi non ricorsivamente):

Codice: Seleziona tutto

 find . -maxdepth 1 -type f $(echo  \!\ -links\ {1..5}) -perm -u=rw ! -perm -u=x
Ultima modifica di vaeVictis il lunedì 28 giugno 2021, 11:50, modificato 1 volta in totale.
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: problema sul numero di link

Messaggio da crap0101 »

ottimo!
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: problema sul numero di link

Messaggio da crap0101 »

tra l'altro ho notato casualmente una feature che non mi sembra documentata (ma non ho verificato bene) [controllato, lo è :-D] che, almeno su

Codice: Seleziona tutto

find (GNU findutils) 4.7.0
semplifica la command line: al posto dell'espansione di -links basta usare

Codice: Seleziona tutto

-links +N
per avere i file con numero di hard links > N
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: problema sul numero di link

Messaggio da vaeVictis »

@crap0101
Ho quella versione ma nella documentazione non lo menziona.
:nono:
Però funziona!
:sisi:
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: problema sul numero di link

Messaggio da crap0101 »

ne parla qui:

Codice: Seleziona tutto

   TESTS
       Some tests, for example -newerXY and -samefile,  allow  comparison  be‐
       tween  the file currently being examined and some reference file speci‐
       fied on the command line.  When these tests are used,  the  interpreta‐
       tion  of  the reference file is determined by the options -H, -L and -P
       and any previous -follow, but the reference file is only examined once,
       at  the  time the command line is parsed.  If the reference file cannot
       be examined (for example, the stat(2) system call fails for it), an er‐
       ror message is issued, and find exits with a nonzero status.

       Numeric arguments can be specified as

       +n     for greater than n,

       -n     for less than n,

       n      for exactly n.

       -amin n
              File was last accessed n minutes ago.
...
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: problema sul numero di link

Messaggio da vaeVictis »

Non ci avevo proprio fatto caso.
Anzi non me lo sono ricordato, perché sono quasi sicuro di aver usato questa feature in passato non con links ma con qualcos'altro che ora non ricordo.
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: nik1404 e 3 ospiti