Tutorial Cum poti copia 100 fisire dintr-un folder pe altul linux

AlexH

Merg pe strada catre Mine...
Membru personal
Administrative
Freelancer
SEO Expert
Cine lucreaza cu foldere care au fisiere multe stiu ca este o nebunie sa incepi mutarea sau copiere la un numar specific de fisiere din acel folder. In mode normal lumea incerca sa move/copy manual, unul cate unul.

Scriptul de mai jos va permite sa mutati intr-o secunda 100 fisiere dintr-un folder in altul.
Numarul 100 se poate modifica dupa bunul plac, in functie de nevoiele voastre.

1. login pe root
2. folositi comanda cd pentru a ajunge in folderul unde aveti fisierele
3. nano cp.sh si adaugati codul de mai jos
Cod:
for file in $(ls -p | grep -v / | tail -100)
do
mv $file /cale/catre/fisierul/de/destinatie/la/fisiere/
done
4. chmod 0777 cp.sh
5. ./cp.sh

Exemplu pentru a intelege mai bine.

Daca aveti un folder cu 3000 de fisiere si vreti sa mutati cate 500 fisiere in directoare diferite.
1. faceti cele 6 directoare
2. editati codul de la punctul 3 de mai sus, unde puneti calea catre folderul de destinatie, pentru fiecare in parte.
 
@AlexH mi se pare un pic cam complicata metoda pentru un lucru simplu, iar comanda nu este de copiere ci de mutare, dar ce zici de:

Copiere:
Cod:
cp -r /folder/curent/ /folder/destinatie/
-r => este pentru recursiv (adica fiecare fisier/folder din fiecare folder existent)
Prin comanda cp se copiaza o copie catre destinatie, ceea ce inseamna ca vor exista 2 copii, una un folderul curent si cealalta in folderul copiat

Mutare:
Cod:
mv /folder/curent/ /folder/destinatie/
Prin comanda mv se ia folderul curent si se muta in destinatie, ceea ce inseamna ca va fi doar o copie existenta in folderul desitnatie.
 
mi se pare un pic cam complicata metoda pentru un lucru simplu, iar comanda nu este de copiere ci de mutare, dar ce zici de:
Nu ai inteles ideea cred.
Daca vrei pur si simplu sa faci copy la fisiere intr-un alt folder, normal ca se foloseste comanda cp sau mv.
Eu vreau sa copiez un numar de fisiere intr-un alt folder si nu tot folderul.
Cum am spus mai sus, am folder de 3000 fisiere si vreau sa fac copy doar la 100.
 
Nu ai inteles ideea cred.
Da, posibil sa fi inteles gresit, dar uite alta metoda exact cu ce faci to un bash fara nevoia de loop.

Cod:
find /folder/sursa/ -maxdepth 1 -type f |head -100|xargs cp -t /folder/destinatie
maxdepth => citeste primul set de foldere
head -100 => preia primele 100 de fisiere
 
@AlexH daca cp -t iti da eroare, poti incerca asta:

Cod:
mv -- *([1,100]) /folder/destinatie/
Astfel se copiaza fisierele in ordine lexicogeografic
 
mv -- *([1,100]) /folder/destinatie/
Presupun ca aceasta comanda se da in folderul din care vrei sa faci copy nu?
Vedeti ce bine este cand colaboram? Aflam metode mai rapide, usoare, etc.
 
Loading...
Back
Sus