Puncte:0

Linux | Copiați numai primele 100 de fișiere noi din director și directoare imbricate

drapel us

Am spațiu de stocare ca mai jos pe AzureVM/Ubuntu

-/A
   -/B --> 10000 de fișiere jurnal
   -/C --> 100000 de fișiere jurnal 
      -/D --> 200000 imagini 
   rezumat.xml
   -/data --> 1000 de fișiere csv

Acum, deoarece dimensiunea datelor este foarte mare pentru a calcula și a face orice operație acolo, vreau să iau o mostră din aceste date pentru a-mi dezvolta codul de analiză a datelor.

Vreau să copiez un subset într-o locație diferită care are cele mai noi 100 de fișiere din fiecare director și director imbricat și toate fișierele de pe rădăcină ceva de genul acesta.

-/Locație nouă
   -/B --> 100 de fișiere jurnal
   -/C --> 100 de fișiere jurnal 
       -/D --> 100 de imagini 
   rezumat.xml
   -/data --> 100 de fișiere csv

Am încercat mai multe comenzi bazate pe cp, dar nimic nu funcționează pentru mine și durează prea mult timp pentru a fi executat.

Ma poate ajuta cineva aici?

David avatar
drapel cn
Ce comenzi? Să vedem exact ce ai încercat. Cum te poate ajuta cineva dacă nu dai informațiile.
Bamboocoder avatar
drapel us
unul dintre lucrurile pe care le-am încercat, mergând la fiecare folder și apoi rulează această comandă cp -R -- *([1,100]) ../New, dar nu copiază toate datele folderelor imbricate, de asemenea, prea multă muncă manuală, deoarece am mii de foldere dintr-unul
David avatar
drapel cn
Informații suplimentare în întrebare, nu ca un comentariu. Ai spus unul dintre lucruri care au fost restul?
Puncte:0
drapel cn

De obicei, puteți împărți acest lucru în trei sarcini, în care începeți cu structura de directoare și apoi, ca în cazul dvs., limitați fișierele la 100. Ultima parte inversează Meci pentru a analiza restul fișierelor.

#!/bin/bash  
  
# Exemplu START  
[[ ! -d A/ ]] && { \  
mkdir -p \  
A/{tmp/folder,\  
{A..Z}}/{imagini,date} && \  
printf %s\0\  
A/{summary.xml,\  
tmp/De5Loh4X.tmp,\  
{A..Z}/{{1..1000}_file.log,\  
imagini/{1..1000}_pic.{jpg,png},\  
data/example.csv}} | xargs -0 atingere; }  
### Exemplu END  
  
set -o noglob  
  
sursa=A  
tinta=tinta  
număr=100  
# prune="-false"  
prune="-type d -path $source/tmp -prune"  
match='-name *.log -o -name *.jpg -o -name *.png'  
  
echo Creați o structură de directoare.  
găsiți „$sursă” \  
\( $prune -o -type d -links 2 \) -printf %P\0 | cpio -0 -pvdm -D „$sursă” „$țintă”  
  
  
echo Copiați 100 de fișiere.  
în timp ce IFS= citește -rd ''; do  
găsiți „$REPLY” \  
-maxdepth 1 -type f \( $match \) -printf '%T@\t%P\0' | sortare -zk1rn | cut -zf2- | cap -zn $numar | cpio -0 -pvdm -D „$REPLY” „$target/${REPLY/#$source\//}”  
gata < <( \  
găsiți „$sursă” \  
\( $prune -false -o -tip f \) -printf %h\0 | sort -zu \  
)  
  
echo Copiați orice altceva.  
găsiți „$sursă” \  
\( $prune -false -o -tip f ! \( $potrivire \) \) -printf %P\0 | cpio -0 -pvdm -D „$sursă” „$țintă”
bac0n avatar
drapel cn
`-name *` va limita toate tipurile de fișiere la 100
Puncte:0
drapel cn

Acest lucru se poate face cu ușurință prin arhivare selectivă. Puteți extrage fișierele tarball (numai cele dorite) și apoi extrageți tarball-ul în altă parte. Presupun că fișierele dvs. jurnal au același nume, cu excepția numerotării (de exemplu, log1, log2 etc). Astfel, primele sute de fișiere pot fi definite în comanda tarball ca log{1..100}. De exemplu:

tar -cvf copied.tar <cale1>/log{1..100} <cale2>/log({1..100} etc

Când extrageți, structura originală a fișierului va fi recreată în noua locație. Așadar, poate fi necesar să utilizați opțiunea „--strip-components=" pentru a trunchia directoarele principale redundante pentru a evita dezordinea.

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.