Как показать только скрытые файлы в терминале?

В отличие от Windows Ubuntu не создает точки восстановления системы для «отката».

Вам придется переустановить 10.10 с нуля, но вы можете создать резервную копию своих данных в своем / домашнем каталоге и начать все заново.

Natty - это только релиз Alpha и не рекомендуется для производства install - вам будет лучше установить его на USB-накопитель и запустить живую версию, чтобы протестировать и сообщить об ошибках.

1
задан 20 May 2014 в 17:30

9 ответов

ls -d .!(|.)

Именно то, что ищет OP.

25
ответ дан 24 May 2018 в 07:37

Если вы просто хотите, чтобы файлы в вашем текущем каталоге (без рекурсии), вы могли бы сделать

echo .[^.]*

Это будет печатать имена всех файлов, чье имя начинается с . и сопровождается одним или несколькими неточечными символами. Обратите внимание, что это приведет к сбою для файлов, имя которых начинается с последовательных точек, поэтому, например, ....foo не будет отображаться.

Вы также можете использовать find:

find -mindepth 1 -prune -name '.*'

-mindepth гарантирует, что мы не будем соответствовать ., а -prune означает, что find t спускаться в подкаталоги.

12
ответ дан 24 May 2018 в 07:37
ls -ad .*

работает для меня в Bash.

9
ответ дан 24 May 2018 в 07:37

Использование find и awk,

find . -type f | awk -F"/" '$NF ~ /^\..*$/ {print $NF}'

Объяснение:

find . -type f -> Список всех файлов в текущем каталоге вместе с его путем, как ,

./foo.html
./bar.html
./.foo1

awk -F"/" '$NF ~ /^\..*$/ {print $NF}'

/ как разделитель полей awk проверяет, чтобы последнее поле смотрело с точкой или нет. Если он начинается с точки, то он печатает последнее поле соответствующей строки.

4
ответ дан 24 May 2018 в 07:37
  • 1
    Вы можете просто использовать find -type f. Вам не нужно явно указывать путь поиска или -name "*". – terdon♦ 19 May 2014 в 08:08

find, как правило, является лучшим вариантом для сложных поисков, чем при использовании имени globbing.

find . -mindepth 1 -maxdepth 1 -name '.*'

или

find . -mindepth 1 -maxdepth 1 -name '.*' -o -name '*~'

find . выполняет поиск в текущем каталоге

-mindepth 1 исключает. и .. из списка

-maxdepth 1 ограничивает поиск в текущем каталоге

-name '.*' найти имена файлов, начинающиеся с точки

или

-name '*~' найти имена файлов, которые заканчиваются тильдой (обычно это файлы резервных копий из программ редактирования текста)

Однако этот и все другие ответы пропускают файлы которые находятся в файле .hidden текущего каталога. Если вы пишете скрипт, эти строки будут читать файл .hidden и отображать имена файлов существующих.

if [[ -f .hidden]] # if '.hidden' exists and is a file
then
    while read filename # read file name from line
    do
        if [[ -e "$filename" ]] # if the read file name exists
        then
            echo "$filename" # print it
        fi
    done < .hidden # read from .hidden file
fi
2
ответ дан 24 May 2018 в 07:37
  • 1
    Что такое .hidden файл? Зачем нужен файл с именем .hidden, который содержит имена файлов? В любом случае, если есть, то почему бы вам сделать что-то такое сложное, когда вам понадобится cat .hidden? Ваша команда find верна (ish), но -name '*~' не имеет значения. Файлы, которые заканчиваются в тильдах, являются резервными файлами, но никоим образом не скрыты. – terdon♦ 21 May 2014 в 08:19
  • 2
    @terdon Файл .hidden предназначен для файлов и папок, которые вы хотите скрыть, если вы не можете изменить имя файла / папки, чтобы начать с точки. Что касается файлов, которые заканчиваются тильдами, это зависит от системы. ls -B будет игнорировать такие файлы, как большинство исследователей файлов GUI. – Mark H 3 May 2016 в 00:31
  • 3
    cat .hidden может показывать файлы, которые больше не существуют, если эти файлы были удалены или перемещены с момента добавления в файл .hidden. – Mark H 3 May 2016 в 00:35

Что еще вы могли бы сделать, is ls .?* Или ls .!(|), который покажет вам все в текущем каталоге скрытых файлов / директорий в верхней части и других файлах / каталогах ниже

, например: из моего terminal

$ ls .?*       
.bash_history    .dmrc        .macromedia   .weather
.bash_logout     .gksu.lock   .profile      .wgetrc
.bash_profile    .bashrc.save .ICEauthority .toprc           .Xauthority
.bashrc          .lastdir     .viminfo      .xsession-errors
.bashrc~         .dircolors   .lynxrc       .vimrc           .xsession-errors.old

..:
Baron

.adobe:
Flash_Player

.aptitude:
cache  config

.cache:
compizconfig-1                              rhythmbox
dconf                                       shotwell

Теперь обратите внимание на приведенные выше результаты, он показывает вам каждый файл / каталог с его субдирером и любыми скрытыми файлами прямо ниже.

[1:0:248][ebaron@37signals:pts/4][~/Desktop]
$ ls .!(|)
.bash_aliases  .bashrc1  .bashrc1~

..:
askapache-bash-profile.txt  examples.desktop             Public           top-1m.csv
backups             Firefox_wallpaper.png        PycharmProjects          top-1m.csv.zip
Desktop             java_error_in_PYCHARM_17581.log  Shotwell Import Log.txt  topsites.txt
Documents           Music                Templates            Videos
Downloads           Pictures                 texput.log           vmware

Извините, я не могу комментировать , чтобы объяснить разницу между ls .?* и @ cioby23 answer ls -d .[!.]* .??* И почему она на самом деле печатает скрытые файлы дважды, потому что буквально вы спрашиваете дважды .??*, .?*, .[!.]*, они - то же самое , поэтому добавление любого из них с разными командами будет печататься дважды.

2
ответ дан 24 May 2018 в 07:37

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

ls -a | grep "^\." | grep -v "^\.$" | grep -v "^\..$"

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

[ f4], я добавил, что для вывода фильтров отображаются только скрытые файлы (имя начинается с ".").

grep -v "^\.$" | grep -v "^\..$" команда Я добавил, что фильтры выводятся для исключения., .. (Они текущий и родительский каталог).

Если некоторые имена файлов могут содержать больше строки с "\n", приведенный выше пример может быть неправильным.

Поэтому я предлагаю следующую команду для решения этой проблемы.

find -maxdepth 1 -name ".[!.]*"
1
ответ дан 24 May 2018 в 07:37

Вы также можете использовать:

ls -d .[!.]* .??*

Это позволит вам отображать обычные скрытые файлы и скрытые файлы, которые начинаются с 2 или 3 точек, например: ..hidden_file

1
ответ дан 24 May 2018 в 07:37
  • 1
    С этим я получаю все скрытые файлы дважды. – TuKsn 19 May 2014 в 14:02

вы можете использовать команду

ls -Ad .??*

. Это имеет преимущество в разрешении многостолбцового листинга, в отличие от подхода на основе grep в решениях ls -a | grep "^\."

1
ответ дан 24 May 2018 в 07:37

Другие вопросы по тегам:

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