Напечатать последние N символов из всех строк в файле, используя cut

Помимо zsh , вы не можете выбирать не -каталоги с помощью подстановочных знаков (вы можете только применить шаблон подстановочных знаков ко всем типам файлов или применить к каталогам и символическим ссылкам на каталоги, поместив /в конце ).

В любой оболочке вы можете просмотреть файлы и исключить те, которые хотите сохранить. Чтобы перечислить все файлы, включая точечные файлы и .и .., используйте два шаблона подстановочных знаков *.*. Возможно, что *не будет соответствовать ни одному файлу и останется нераскрытым; в этом случае rm -rfвыполняется для *, что ничего не делает, поскольку rm -fигнорирует несуществующие -аргументы.

for x in *.*; do
  case "$x" in
   .|..: continue;;                              # skip the. and.. entries
    *[!0-9]*) rm -rf -- "$x";;                    # not just digits -> delete
    *) if ! [ -d "$x" ]; then rm -f -- "$x"; fi   # just digits -> delete if not a directory
  esac
done

0
04.11.2019, 08:25
1 ответ

cutсам по себе не имеет понятия «последние N символов» в строке. Однако, если вы объедините это с программой rev, вы можете перевернуть каждую строку, выбрать первые N символов, а затем обратить результат, чтобы вернуть исходный порядок.

 rev | cut -c 1-3 | rev
6
28.01.2020, 02:13

Теги

Похожие вопросы