Команда для перечисления всех файлов, кроме. (точка) и.. (точка)

Я пытаюсь найти команду, которая бы перечисляла все файлы (включая скрытые), но должна исключить текущий каталог и родительский каталог. Пожалуйста, помогите.

$ ls -a \.\..

Ответ 1

Прочитайте ls (1) документацию (возможно, с man ls). По крайней мере, привык попробовать

ls --help

или еще лучше (поскольку ls может быть псевдонимом, например, в вашем ~/.bashrc)

/bin/ls --help

Вы получите что-то, начиная с:

Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

Mandatory arguments to long options are mandatory for short options too.
  -a, --all                  do not ignore entries starting with .
  -A, --almost-all           do not list implied . and ..
      --author               with -l, print the author of each file
  -b, --escape               print C-style escapes for nongraphic characters

и т.д....

Вы хотите ls -A или еще лучше /bin/ls -A (без каких-либо дополнительных аргументов, таких как .*)

Ответ 2

У меня есть ситуация, когда я хочу удалить серию точечных каталогов. На моих серверах мы помещаем каталоги для удаления, добавляя точку и некоторые другие текстовые шаблоны (временную метку) для автоматического удаления. Иногда мне нужно сделать это вручную.

Как я прокомментировал ответ Василию Старинкевичу, когда вы используете шаблон глобуса, подобный такому, который находится под переключателем -A, теряет свою функцию и работает так же, как -a:

 [email protected]:~/scripts$ ls -1dA .*
.
..
.comparepp.sh.swp

Это, безусловно, даст ошибку, если я попытаюсь удалить файлы в качестве пользователя, но я просто не хочу думать, что может произойти как root (!)

Мой подход в этом случае:

for dir in $(ls -1ad .* | tail -n +3) ; do rm -rfv $dir  ; done

Я вывожу вторую первую строку, содержащую точки, как вы можете видеть. Чтобы адаптировать ответ на заданный вопрос, это выполнит эту задачу:

ls -d1A .* | tail -n +3