PDA

Zobacz pełną wersję : Wyszukiwanie zdjęć po nazwach z pliku tekstowego



malita
12-03-2015, 14:30
Szukam prostego programu i sposobu na wyszukanie zdjęć po nazwach z pliku tekstowego.

Plik tekstowy o rozszerzeniu *.csv (nie do zmiany, zawsze będzie .csv) w którym są nazwy plików *.jpg jeden pod drugim bez przecinków etc z tego pliku tekstowego potrzeba znaleźć pliki o tych samych nazwach na komputerze (wskazując podany katalog lub ogólnie komputer) i najlepiej aby wyciąć i wkleić do wybranego przezemnie katalogu.

Ja nie chce starać się szukać tych plików bo wiem, że one są na moim komputerze i dokładnie wiem w któym katalogu a chce ułatwić sobie życie przez automatyczne zaznaczenie z pliku tekstowego i przeniesienie ich do wytypowanego katalogu.

Jeśli ktoś wie jaki program może zautomatyzować ten proces, komenda pod windowsem czy też linux/macosx byłbym wdzięczny za pomoc.

Udostępniłem przykładowy plik tekstowy w którym są nazwy plików, można go oczywiście przekonwertować na coś innego ale w tej formie jest najprostszy i taki zawsze dostaje wyjściowo z systemu typowania zdjęć przez klientów.
https://www.dropbox.com/s/0zayiarlg0ro9x1/favlist-393959.csv?dl=0

PS Ktoś już mi doradził total commandera, nie ma opcji wskazania pliku z którego ma brać nazwy plików i szukać na dysku.

if then this

PiKa
12-03-2015, 15:25
for i in `cat plik.csv`; do mv /katalog/zrodlowy/$i /katalog/docelowy/; done

P.S. usuń adres mail z pliku...

Kurtz
12-03-2015, 16:18
Na szybko w Powershellu ( Nie testowane )


function Copy-Files-From-CSV {
<#
.SYNOPSIS
Functions copies all files listed in .csv file to specified folder
.PARAMETER src_folder
Source folder from where the photos will be taken
.PARAMETER dst_folder
Destination folder to where the photos will be copied
.PARAMETER csv_file
CSV File containing file names to copy in first collumn
.PARAMETER move
Changes the default behaviour to move instead of copy
#>
param
(
[Parameter(Mandatory=$True)]
[string]$src_folder,
[Parameter(Mandatory=$True)]
[string]$dst_folder,
[Parameter(Mandatory=$True)]
[string]$csv_file,
[Parameter(Mandatory=$False)]
[bool]$move = $false
)

$files = import-csv $csv_file -Header filename;

foreach ( $file in $files )
{
if($move)
{
Move-Item -Path "$src_folder/$($file.filename)" -Destination "$dst_folder"
}
else
{
Copy-Item -Path "$src_folder/$($file.filename)" -Destination "$dst_folder"
}
}

}

copy-files-from-csv -src_folder "c:/asdf" -dst_folder "c:/asdf/dst" -csv_file "c:/path/to/csv/file.csv" -move 1

malita
13-03-2015, 10:47
Wielkie dzięki Panowie za szybką odpowiedź, będę wasze rozwiązanie testował i próbował, na windowsie dzięki Powershellu i też w OSX w bashu spróbuje, you save my life! !:)

Co do tych dwóch opcji jest teoretyczna możliwość utworzenia skrótu komendy/akcji który mógłbym wrzucać do katalogu źródłowego w którym są zdjęcia + lista zdjęć w .csv i po uruchomieniu (kliknięciu) skrypt automatycznie wykrywał by zdjęcia + listę i tworzył zdefiniowany nazwą np. wybrane podkatalog w katalogu z wyciętymi zdjęciami ?

PiKa
13-03-2015, 23:37
Musi być .csv? Ta pierwsza linijka mi psuje wszystko bo nie jest plikiem, a nie chce mi się jej filtrować. Generuj csv bez nagłówka i z jedną kolumną - nazwą pliku...

Nie testowane:


#!/bin/bash
mkdir wybrane
for csv in *.csv; do
for plik in `cat $csv`; do
mv -i $plik wybrane
done
done

Tworzy katalog 'wybrane', iteruje po wszystkich plikach *.csv w bieżącym katalogu, przenosi pliki do tego katalogu. Jeśli plik już istnieje w katalogu to pyta czy nadpisać. Jeśli katalog wybrane istnieje przed startem skryptu, to pewnie napisze, że nie może go utworzyć, ale nie przerwie działania tylko będzie przenosił do niego pliki.

Tak na prawdę w plikach .csv nazwy plików mogą być rozdzielone dowolnym biały znakiem (nową linią, spacją, tabem itp). Co znaczy, że pliki nie mogą mieć spacji itp.

malita
17-03-2015, 13:12
PiKa i Kurtz wielkie dzięki za pomoc ! działa jak trzeba i życie stało się prostsze :-)

PiKa z pliku .csv po usunięciu pierwszej linijki z nazwą katalogu i mejlem i wtedy w konsoli w mgnieniu oka wykonuje to zadanie, wywala informacje o plikach ale robi co trzeba :)

KaarooL
17-03-2015, 14:04
Panowie, można jechać okrężną drogą a wystarczy przecież zwykłe wczytanie selekcji z pliku txt do Total Commander'a...

ayu
02-10-2017, 07:25
Odkopuję. Czy może ktoś to jakoś obrazowo jak krowie na granicy wytłumaczyć jeszcze raz?