Поскольку эти значения всегда являются целыми числами, вы можете сделать что-то вроде:
cut $(awk 'NR>1{for(i=2;i<=NF;i++) s[i]+=$i}END{printf("%s", "-f 1");
for (i=2;i<=NF;i++) {if (s[i]) printf(",%s", i)}}' infile) infile
это читает файл дважды: awk
получает номера столбцов, сумма которых не равна нулю; затем они используются с вырезом
для печати только требуемых столбцов.
Так и должно быть:
rm -rf.[^.].??*
Эта команда может перехватывать все случаи.
.[^.]
поймает любые два ввода символов. .??*
будет соответствовать только именам файлов длиной более 3 символов.
Необходимо исключить одиночные и двойные точки:
rm -rf {..?,.[!.]}*
..?*
соответствует всему с двумя точками, за которыми следует что-либо .[!.]*
сопоставляет все с одной точкой, за которой не следует другая точка Сextglob
:
$ shopt -s extglob
$ touch....a.bbb..c foo
$ echo.!(.|)
....a.bbb..c
!(.|)
соответствует чему угодно, кроме точки или пустого места, поэтому .!(.|)
соответствует всему, что начинается с точки, кроме .
и ..
.
Мне кажется, у @Goro самый простой и абсолютно правильный ответ. Тем не менее, я считаю, что это больно печатать. Вместо этого я бы предложил
ls.??*
Совершенно верно, что при этом будут пропущены такие файлы, как .a
, но они настолько необычайно редки, что на практике я не думаю, что это имеет значение, особенно для интерактивного использования.
С find
набирать немного больше, но вы можете быть более явным, что облегчает понимание:
find. -maxdepth 1 -name '.*' ! -name. ! -name.. -exec rm -rf {} +
Это вызывает rm -rf
со всеми именами в текущем каталоге (только ), который начинается с точки и не является ни .
, ни ..
. Я не использую здесь -delete
, так как этот предикат не может удалять не пустые каталоги -.
Если вы хотите сопоставлять только обычные файлы в текущем каталоге, это становится еще проще:
find. -maxdepth 1 -type f -name '.*' -delete
Здесь нам не нужно исключать .
или ..
, так как они автоматически исключаются -type f
.
Измените -type f
на ! -type d
, чтобы удалить любой каталог, отличный от -, (, то есть символические ссылки и т. д.)