Почему команда ls показывает удаленные файлы?

Когда я печатаю ls в терминале он показывает файлы, которые присутствуют, а также файлы, которые я удалил. Как я могу видеть только текущие файлы и почему ls вести учет удаленных файлов?

ls показывает имена удаленных файлов, за которыми следует тильда (~).

3 ответа

Решение

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

printf '%s\n' *

echo *

ls -U

любой из них вместо ls ссылка здесь

~ Символ может во время выполнения кэша или резервных файлов. Для этого обратитесь сюда

Я отредактировал это после просмотра вашего комментария; используйте эту команду, чтобы удалить эти резервные файлы (файлы с ~ условное обозначение)

find ./ -name '*~' | xargs rm

ls не кеширует имена файлов. Это действительно показывает, что именно находится в файловой системе. Однако, как намекнул @Ravan, в вашем каталоге могут быть файлы с аналогичными именами. Обычно это кэши времени выполнения или блокировка файлов, создаваемых такими программами, как Vim и Emacs, но это может быть что угодно. Например, если я делаю следующее в одном терминале:

$ touch foo
$ vim foo

Тогда я увижу следующее в другом терминале:

$ ls -A
foo  .foo.swp

.foo.swp это скрытый временный файл, который будет удален, если Vim завершит работу.

Такие файлы могут быть безопасно удалены, если они остались от более ранних сеансов редактирования, которые больше не открыты. Просто убедитесь, что вы указали имена файлов, так как они могут содержать специальные символы, такие как тильда (~):

$ rm '.foo~'

Имя, за которым следует "~", на самом деле является файлом кэша. Когда вы удаляете файл, он все равно может оставаться скрытым файлом для nautilus, но команда "ls" покажет их.

Бежать rm *~ удалить эти файлы.

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