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