Linux Bash: перемещение / копирование файлов / каталогов по метке времени

Это команда, которую я использую:

find absolute-path -name "*" -amin -120 -exec cp -f absolute-destination {} ;

Я пытаюсь скопировать много каталогов из каталога в другой каталог, но только те, что были созданы в последние 2 часа.

моя команда не работает, хотя и я действительно не понимаю, почему, если это не очевидно, я не очень опытный пользователь Linux. Из чего я получаю cp, Кажется, интерпретирует мое предназначение как источник.

Я даже пробовал использовать xargs и что я понимаю даже менее.

использование Bash в Debian Squeezy и выполнение команды в root.

28
задан JakeGould
26.04.2023 21:18 Количество просмотров материала 2708
Распечатать страницу

1 ответ

из того, что я вам cp, кажется, интерпретировать мое предназначение как источник.

Да, это так. Это потому, что общий синтаксис Linux/Unix выглядит примерно так:

[some command] [some command options] [source item] [destination item]

Итак, посмотрите на свою команду:

find absolute-path -name "*" -amin -120 -exec cp -f absolute-destination {} \;

это cp -f absolute-destination {} обратная с {} представляет исходный файл, найденный find команда и "абсолютное назначение" - это именно то, что это; назначение. Так что часть команда должна быть переписана как cp -f {} absolute-destination.

дополнительно:

  • на -name "*" является избыточным и излишним, если вы ищете все файлы, основанные на времени в любом случае; это означает, что вы можете просто канаву, что.
  • кроме того, использование amin немного запутанным, так как -amin -120 означает "файл доступ за последние 120 минут."Если вы хотите действовать на создание время файлов, которое должно быть изменено на cmin-aka: изменено n минут назад-вместо этого; подробнее в Linux find man-страница.

таким образом, последняя команда будет:

find absolute-path -cmin -120 -exec cp -f {} absolute-destination \;

но перед запуском этого cp команда вы всегда должны делать "сухой прогон" с помощью echo чтобы увидеть, что именно происходит такой:

find absolute-path -cmin -120 -exec echo {} \;

помните, выполнение теста "сухой прогон" команды, как это до запуск фактической / окончательной команды спасет вас головные боли в долгосрочной перспективе. Особенно, если вы планируете запускать команду как root.

вы никогда не знаете, если вы, возможно, сделали простую, непреднамеренную ошибку в логике команды, которые могут испортить неожиданным образом. И бросание неправильно структурированной команды в" производство " без тестирования может сэкономить вам несколько минут в начале, но затем может привести к часам-а в некоторых случаях и дням-работы по очистке. всегда безопасное воспроизведение при работе в команде линия.

1
отвечен JakeGould 2023-04-28 05:06

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх