Из того, что я получаю, кажется, что 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
а «absolute-destination» - именно то, чем он является; пункт назначения. Так что эта часть команды должна быть переписана как cp -f {} absolute-destination
.
Дополнительно:
-name "*"
является избыточным и излишним, если вы все равно ищете все файлы по времени; это означает, что вы можете просто бросить это.
- Кроме того, использование
amin
немного сбивает с толку, так как -amin -120
означает «к файлу обращались последние 120 минут». Если вы хотите воздействовать на время создания файлов, вместо этого следует изменить значение на cmin
--aka: изменено n
минут назад - вместо этого; более подробную информацию можно find
странице справки по Linux.
Таким образом, последняя команда будет:
find absolute-path -cmin -120 -exec cp -f {} absolute-destination \;
Но перед запуском этой команды cp
вы всегда должны выполнить «пробный запуск» с использованием echo
чтобы точно увидеть, что происходит следующим образом:
find absolute-path -cmin -120 -exec echo {} \;
Помните, что выполнение тестового «пробного запуска» такой команды перед выполнением фактической / последней команды избавит вас от головной боли в долгосрочной перспективе. Особенно, если вы планируете запускать команду от имени пользователя root
.
Вы никогда не знаете, возможно, вы допустили простую, непреднамеренную ошибку в вашей командной логике, которая может привести к ошибкам. А введение ошибочно структурированной команды в «производство» без тестирования может сперва сэкономить несколько минут, но затем может привести к часам, а в некоторых случаях и дням, работы по очистке. Всегда будьте осторожны при работе в командной строке.