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