2016-01-20 4 views
0

Я хочу, чтобы удалить старые файлы в каталоге, когда количество файлов больше, чем 5. Я используюКак использовать выходные данные команды LS в п.м. для конкретного каталога

(LS -1t | хвост -n 3)

, чтобы получить самые старые 3 файла в каталоге. Это работает так, как я хочу. Теперь я хочу удалить их в одной команде с помощью rm. Когда я запускаю эти команды на сервере Linux, cd в каталог и удаление не работает, поэтому мне нужно использовать либо find, либо ls с rm и удалять самые старые 3 файла. Пожалуйста, помогите. Thanks :)

+0

_cd в каталог и удаление не working_ - как это? 'ls -1t' также работает только с текущим каталогом, поэтому, поскольку это работает, оно должно быть уже в правильном каталоге. – Armali

ответ

0

Если вы хотите удалить файлы из какого-либо произвольного каталога, затем передайте имя каталога в команду ls. По умолчанию используется текущий каталог.

Затем с помощью расширения параметров $() для передачи результата tail в rm как этот

rm $(ls -1t dirname| tail -n 3) 
+0

Я хочу удалить в определенном каталоге, не могу ли я передать имя каталога в rm cmd? некоторые вроде: 'rm $ (ls -1t | tail -n 3)' – user2340345

+0

, если я использую cd && rm $ (ls -1t | tail -n 3), тогда он говорит, что такой каталог , Они являются zip-файлами и не удаляются. – user2340345

+0

Я обновил ответ, чтобы вы могли удалять файлы из любого каталога. –

0
rm $(ls -1t | tail -n 3) 2> /dev/null 
+0

Почему вы перенаправляете * stderr *? Почему не 'rm -f'? –