Sigur, puteți face acest lucru cu un script Bash foarte mic.
Presupun că ai lista ales.txt
în directorul dvs. de acasă, din care Imagini este un subdirector. Dacă nu este cazul, vă rugăm să ajustați căile în consecință.
Mai întâi faceți directorul în care mutați fișierele. Presupun că tocmai ați deschis un terminal și vă aflați în directorul dvs. de acasă. Puteți muta directorul mai târziu.
mkdir ChosenOnes
Acum verificați dacă puteți găsi fișierele corecte folosind lista dvs. astfel:
while read -r line; găsiți Imagini -nume "$line" -ls; făcut < ales.txt
Dacă rezultatul pare corect, puteți copia fișierele ajustând comanda:
while read -r line; găsește Imagini -name "$line" -exec cp -vt ChosenOnes {} \; ; făcut < ales.txt
Putem face ca asta să arate puțin mai bine:
#!/bin/bash
# citește lista noastră și
while read -r line; do
# găsiți fișierele din el și copiați-le în noul director
find Pictures -name "$line" -exec cp -vt ChosenOnes {} \;
făcut < ales.txt
Explicaţie
while read -r line; fa lucruri; done < input-file
A in timp ce
bucla continuă să facă ceva atâta timp cât o condiție este valabilă. Aici cerem ca lista noastră să fie citită rând cu rând. Fiecare linie va fi introdusă în variabilă linia
astfel încât să putem rula niște comenzi(e) pe el. Când terminăm cu comenzile noastre de pe acea linie, următoarea linie va fi citită, până când rămânem fără linii în fișierul nostru.
găsiți calea -nume "$line"
The găsi
comanda face o căutare recursivă în jos de la calea dată (Imagini în cazul nostru). Aici folosim -Nume
opțiunea de a găsi fișiere care se potrivesc cu numele din listă.
-ls
The găsi
comanda are o opțiune de a enumera fișierele găsite. Acest lucru este util pentru a verifica ceea ce a fost găsit înainte de a lua orice acțiune
-exec comanda {} \;
The -exec
opțiunea de căutare rulează comanda dată pe fișierele care au fost găsite (reprezentate de {}
)
cp -vt
The -v
opțiunea face cp
spune-ne ce face. The -t
opțiunea specifică destinația (dam directorul de destinație imediat după ea); în caz contrar, destinația va fi considerată a fi ultimul argument.