Я знаю, что это - грех для парсинга ls
, но что относительно этого:
find . -type f -maxdepth 1 | xargs ls -ltr | sed '1,3d' | awk '{print $9}' | xargs rm
Быстрый тест с 5 пустыми файлами:
$ >1
$ >2
$ >3
$ >4
$ >5
$ find . -type f -maxdepth 1 | xargs ls -lt | sed '1,3d' | awk '{print $9}' | xargs rm
$ ls -1
3
4
5
Использование sed удаляет команду (здесь принимающий GNU sed
как найдено на Ubuntu и других системах GNU).
sed -i '/^[@#]/ d' sample.txt
Если необходимо объяснить продвижение пробелов:
sed -i '/^\s*[@#]/ d' sample.txt
grep '^[^@#]' < file.in > file.out
даст вам строки, начинающиеся с любого символа, кроме @
и #
, поэтому эффективно удалите строки #foo
, @foo
, а также пустые строки.
grep -v '^[@#]' < file.in > file.out
сохранит пустые строки. Если вы хотите рассмотреть строки с пробелами перед @
,#
:
grep -v '^[[:blank:]]*[@#]' < file.in > file.out
А также убрать пустые строки:
grep '^[[:blank:]]*[^[:blank:]@#]' < file.in > file.out