Mam dużą liczbę zdjęć ze starego dysku twardego, który próbuję uporządkować. Jeśli uruchomię ls -l
, zauważę , że wszystkie te pliki mają datę utworzenia 2012 lub wcześniejszą. Idealnie chciałbym przenieść je na drugi dysk twardy mojego komputera, który nie jest ustawiony do automatycznego montowania. Najlepiej, gdybym mógł to wszystko zrobić jako partię z kilkoma połączonymi ze sobą poleceniami. Do tej pory mam, ls -l | grep -i 2012
która wyrzuca tylko pliki z 2012 r. W terminie podanym przez ls -l
. Teraz sztuczką byłoby przeniesienie cp
wszystkich tych plików do nowego katalogu. Nie jestem pewien, co dalej z tym, ponieważ każdy plik musiałby zostać skopiowany. Jaki byłby mój następny zestaw poleceń?
źródło
Jeśli masz stare pliki na starym dysku, które chcesz zignorować, zrobiłbym to w ten sposób
Oto przykładowe polecenia, które zakładają, że chcesz zachować hierarchię katalogów ze starego dysku na nowym (
cpio
jest to polecenie kopiowania, podobne dotar
lubpax
):źródło
Myślę, że może ten problem jest taki sam jak twój, możesz też to sprawdzić: Twórz podkatalogi i organizuj pliki według daty
Piszę ten nowy skrypt w oparciu o pierwszą odpowiedź na ten problem:
napisz ten skrypt do pliku o nazwie
copy.sh
w starym katalogu.zastąp
/your/new/directory
ścieżkę do nowego kataloguuczyń ten plik wykonywalnym za pomocą
chmod +x copy.sh
następnie uruchom ten plik przez
./copy.sh
źródło
2015
katalogu.Prawdopodobnie powinieneś użyć narzędzia wsadowego do operacji wsadowych. Takie postępowanie zazwyczaj wymaga odczytu / zapisu wszystkich rekordów w jednym strumieniu, a nie na przykład wywołania osobnego
cp
procesu dla każdego skopiowanego pliku.Tutaj jest już
cpio
napisana odpowiedź, która biorąc pod uwagę tylko te opcje, które zapewniono, jest prawdopodobnie tym, co wybrałbym. Jednakcpio
format ten został ulepszony i złożony do znormalizowanegopax
formatu archiwum od czasów świetności. To samo dotyczytar
.Ściśle POSIX-
pax
prawdopodobnie nie zapewni żadnych opcji bezpośredniego filtrowania elementów archiwalnych na podstawie czasów modyfikacji plików - chociaż standard określa%T
modyfikator formatu trybu listy. Jednak najbardziej dostępnapax
implementacja, o której wiem - czyli wersja BSD obsługiwana przez mirabilos - rozszerza ją na bezpośrednio dostępny przełącznik CLI.Na przykład, aby skopiować tylko wszystkie pliki w drzewie zakorzenione w
./
którym zostały zmodyfikowane przedccyymmddHHMM
, aby/target/dir
można było zrobić:Aby uniknąć powtarzania się w katalogach potomnych, możesz zamiast tego:
Zobacz
man
stronę po więcej.źródło
pax
, aletar
icpio
nadal stać mnie dobrze. +1pax
Format archiwum (co jest rozszerzeniem ustar formacie) , POSIX-spec''dpax
narzędzie odczytuje / zapisuje cpio, pax i ustar formaty. Ponieważ wszystkie trzy typy archiwów sprowadzają się przede wszystkim do różnych sposobów kodowania metadanych dla wielu plików obok rzeczywistych danych wspomnianych plików w jednym strumieniu, nie jest to naprawdę zbyt duże obciążenie. Kiedyś napisałemshitar
- co było tylko kilka wierszy skryptu powłoki dla - główniedd
-tar
twórców bloków w locie w oparciu o specyfikację POSIX.cpio -H ustar
...