1

Я нахожусь в сессии замазки и хотел бы удалить файлы из каталога, которые были созданы в 2009 году.

Пожалуйста, не могли бы вы дать мне точную команду?

3 ответа3

2

Во-первых, тот факт, что вы используете 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.
1

Я предполагаю, что вы используете 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
0

Лучше всего написать сценарий оболочки на целевом сервере. Plink не предоставляет никакой обработки для stdin. См .: https://stackoverflow.com/questions/603187/how-to-send-commands-to-putty.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .