Я нахожусь в сессии замазки и хотел бы удалить файлы из каталога, которые были созданы в 2009 году.
Пожалуйста, не могли бы вы дать мне точную команду?
Во-первых, тот факт, что вы используете ssh, на самом деле не имеет значения. Важна «оболочка», которую она вам представила, и какие инструменты у вас есть. Я собираюсь предположить, что вы находитесь в 'Bash' и у вас есть 'find'.
Я также собираюсь предположить, что под «созданным в 2009 году» вы имеете в виду «старше 2010 года», так как мне легче ... если нет, то посмотрите за перерыв!
Попробуйте find
:
find /path/to/directory/ -ctime +567 -delete
Выше будет удалено что-нибудь более 567 дней (примерно на 2009 год на дату этого поста)
Вместо -delete
вы сначала можете использовать -print
. Если вы уверены, что печатаете только то, что хотите удалить, используйте -delete
.
Если вы не хотите, чтобы материал был удален из 2008 года, тогда вы могли бы сделать следующее:
find /path/to/directory/ -ctime +567 -ctime -932 -delete
Эти цифры, вероятно, не правы, вы можете настроить его.
Соответствующие разделы человека найти:
-ctime n
File's status was last changed n*24 hours ago. See the comments
for -atime to understand how rounding affects the interpretation
of file status change times.
Numeric arguments can be specified as
+n for greater than n,
-n for less than n,
n for exactly n.
Я предполагаю, что вы используете PuTTY для подключения к какому-либо компьютеру, на котором работает какой-то дистрибутив Linux с использованием SSH. К сожалению, большинство дистрибутивов Linux не записывают дату создания файла. Вы можете узнать только когда файл был последний раз изменен и когда к нему последний раз обращались.
Если вы хотите найти все файлы в текущем каталоге, которые были в последний раз изменены в 2009 году, используйте эту команду:
find * \( ! -newermt '2010-01-01' \) -newermt '2008-12-31 23:59' -type f
Если вы также хотите искать в подкаталогах, измените *
на .
и удалите -type f
примерно так:
find . \( ! -newermt '2010-01-01' \) -newermt '2008-12-31 23:59'
Предыдущие две команды будут распечатывать только имена файлов. Если вы уверены, что хотите удалить файлы, добавьте -delete
в конец:
find * \( ! -newermt '2010-01-01' \) -newermt '2008-12-31 23:59' -type f -delete
Лучше всего написать сценарий оболочки на целевом сервере. Plink не предоставляет никакой обработки для stdin. См .: https://stackoverflow.com/questions/603187/how-to-send-commands-to-putty.