Посмотрите на вторую строку вывода в обоих случаях. fsck --help
использовал fsck.ext3
(по умолчанию в вашей системе) и отображал параметры, действительные для этого инструмента, но fsck -p /dev/mmcblk0
использовал exfatfsck
, так как это подходит для вашей SD-карты.
К сожалению, exfatfsck
не может исправлять ошибки, он может только сообщать о них. Так что запустите
fsck /dev/mmcblk0
, чтобы увидеть, есть ли ошибки; если есть, вам понадобится другая стратегия восстановления файловой системы:
находят. -type f -exec echo {} \;
Действие по умолчанию для find
- распечатать результаты. Если явно не указано иное, find
по умолчанию выполняет поиск в текущем каталоге. Вашу команду можно упростить до find -type f
.
Почему / когда это имеет значение? Только когда вы запустите эту команду в достаточно большом каталоге, вы начнете видеть разницу в производительности. -exec echo {} \;
заставит ваш компьютер работать без надобности больше, потому что он должен запускать внешний процесс, такой как / bin / echo
, чтобы распечатать имена файлов. Один экземпляр исполняемого файла echo запускается для каждого файла, найденного с помощью find
.
Чтобы ответить на ваш вопрос об удалении ./
, более эффективным методом будет использование вырезать
. Вы знаете, что первые два символа всегда ./
. cut -c3-
сохранит только символы из позиции 3 и выше.
> cd /etc/fonts/conf.d
> find -type f | cut -c3-
99pdftoopvp.conf
00kde.conf
65-khmer.conf
README
Это не сработает, как ожидалось, если ваши имена файлов содержат символ новой строки, но это совсем другая история.
Предполагая, что вам нужно не только имя файла, но и полный относительный путь без ведущих ./
, если у вас есть GNU find
, вы можете попробовать следующее:
find . -type f -printf '%P\n'
В противном случае, вы можете попробовать одно из этих:
find . -type f -print | cut -d/ -f2-
find .[^.]* * -type f -print
Вы должны избегать последнего (подумайте о слишком длинной командной строке, если у вас много записей в каталоге).
-print
делает то же самое, что и ваш -exec echo {} \;
, но гораздо лучше: нет вызова внешнего процесса, поэтому меньше накладных расходов и нет нежелательных побочных эффектов с именами файлов, начинающимися с тире.
GNU-версия find предоставляет встроенное действие -printf format, которое позволяет вам форматировать вывод вашего запроса.
Итак, чтобы ответить на ваш вопрос
find . -type f -printf '%f\n'
Выводит только имена файлов без ведущих символов (или имена путей) с новой строкой, так что каждое имя файла находится на своей строке
Используйте *
вместо .
, и ведущий ./
исчезнет.
find * -type f