У меня есть большое количество фотографий со старого жесткого диска, которые я пытаюсь организовать. Если я запускаю ls -l
, я замечаю, что все эти файлы имеют дату создания 2012 или ранее. В идеале я хотел бы перенести их на второй жесткий диск моего компьютера, который не настроен для автоматического монтирования. Предпочтительно, я мог бы сделать все это как пакет с некоторыми командами, связанными вместе. Пока у меня есть, ls -l | grep -i 2012
который выкладывает только файлы с 2012 года на дату, указанную ls -l
. Теперь хитрость заключается в том, чтобы cp
переместить все эти файлы в новый каталог. Я не уверен, куда идти дальше с этим, потому что каждый файл должен быть скопирован. Каким будет мой следующий набор команд?
источник
Если у вас есть новые файлы на старом диске, которые вы хотите игнорировать, я бы сделал это так
Вот примеры команд для этого, которые предполагают, что вы хотите сохранить любую иерархию каталогов со старого диска в новом (
cpio
это команда копирования, похожая наtar
илиpax
):источник
Я думаю, что, возможно, эта проблема очень похожа на вашу, вы также можете проверить это: создавать подкаталоги и упорядочивать файлы по дате
Я пишу этот новый сценарий на основе первого ответа этой проблемы:
запишите этот скрипт в файл с именем
copy.sh
в вашем старом каталоге.замените
/your/new/directory
путь к вашему новому каталогусделать этот файл исполняемым с
chmod +x copy.sh
затем выполните этот файл
./copy.sh
источник
2015
каталог.Вы, вероятно, должны использовать пакетный инструмент для пакетных операций. Это обычно влечет за собой чтение / запись всех записей в одном потоке, а не, например, вызов отдельного
cp
процесса для каждого скопированного файла.Здесь уже
cpio
написан ответ, который, учитывая только варианты, уже предоставленные вам, скорее всего, я бы выбрал. Тем не менее,cpio
формат был улучшен и свернут в стандартизированныйpax
формат архива с его расцвета. То же самое относится и кtar
.Строго POSIX -
pax
вряд ли предоставит какие-либо опции для прямой фильтрации членов архива в зависимости от времени изменения файла - хотя стандарт определяет%T
модификатор формата в режиме списка. Тем не менее, наиболее распространеннаяpax
из известных мне реализаций - версия BSD, поддерживаемая mirabilos, - действительно расширяет ее до напрямую доступного CLI-коммутатора.Например, чтобы скопировать только файлы в дереве с корнем в
./
котором последнего изменения , прежде чемccyymmddHHMM
к/target/dir
вы могли бы сделать:Чтобы не возвращаться в дочерние каталоги, вы можете сделать следующее:
Смотрите
man
страницу для получения дополнительной информации.источник
pax
, ноtar
иcpio
до сих пор хорошо меня выдерживает. +1pax
формат архива (который является расширением формата ustar ) ,pax
утилита POSIX-spec может читать / записывать форматы cpio, pax и ustar. Поскольку все три типа архива в основном сводятся к разным средствам кодирования метаданных для многих файлов вместе с фактическими данными указанных файлов в единый поток, на самом деле это не слишком много. Однажды я написалshitar
- это было всего несколько строк shell-скрипта для - в основномdd
-tar
разработчиков блоков на лету на основе спецификации POSIX.cpio -H ustar
...