Puncte:2

Cum să găsești aceleași subdosare în două foldere numai la primul nivel?

drapel cn

Scenariu:

  • 2 foldere principale, care pot avea subfoldere cu aceleași nume (nu știu ce nume ar putea fi duplicate, asta încerc să găsesc)
  • subfolderele au MULTE alte fișiere și subfoldere, așa că instrumentele cu recursivitate automată nu sunt cu adevărat o opțiune
  • Îmi pasă doar de numele subfolderelor duplicate la primul nivel al celor două foldere principale
  • conținutul subdosarelor nu contează
  • conținutul fișierelor nu contează

Am incercat sa folosesc se amestecă GUI, dar pentru aceste structuri este nevoie de timp nesfârșit.

Am incercat sa folosesc diff --brief --report-identical-files folder1 folder2 dar asta practic raportează totul și nici măcar nu include folderele așa că nici măcar nu pot | grep identic.

Folosesc instrumente greșite? Sau există vreun truc de la care nu am primit diff --ajutor ? Sau fac ceva greșit?

Mulțumiri

Puncte:5
drapel in

Aș folosi un simplu găsi:

găsiți „/path/to/main1” „/path/to/main2” -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | sortare | uniq -d

Sau pentru a se termina cu zero pentru a preveni problemele cu caracterele de linie nouă:

găsiți „/cale/către/principal1” „/cale/către/principal2” -mindepth 1 -maxdepth 1 -type d -printf '%f\0' | sortare -z | uniq -zd | xargs -0
terdon avatar
drapel cn
@jave.web nu copiați: faceți un folder nou, apoi faceți legături simbolice către cele două directoare țintă din acest folder nou și utilizați `find -L /path/to/new/folder -mindepth ....` („ -L` îi spune lui `find` să urmeze legăturile simbolice). În acest fel, nu trebuie să duplicați datele.
jave.web avatar
drapel cn
Ok, după editare, funcționează exact așa cum era de așteptat. (Rețineți că dacă doriți același lucru pentru fișiere, utilizați `-type f` în loc de `-type d`. @terdon mulțumesc pentru sugestie, care este cu siguranță o abordare.
Puncte:1
drapel hr

Folosind zsh, dat

% arbore dir1 dir2
dir1
âââ bar
âââ foo
    âââ baz
dir2
âââ bar
â  âââ baz
âââ baz

6 directoare, 0 fișiere

atunci

% a=( dir1/*(/ND:t) ) ; b=( dir2/*(/ND:t) )

creează matrice ale tails (numele de bază) ale directoarelor / în cele două directoare de nivel superior dir1 și dir2 (cu Dotglob și Nopțiunile ullglob sunt activate).

Apoi putem folosi o extindere a formei ${name:*arrayname} pentru a reține numai elementele care sunt prezente în ambele matrice:

% print -rC1 ${a:*b}
bar

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.