Как найти номер inode с помощью команды «find»?

Как вы находите номер inode имени файлов, начинающихся с определенного ключевого слова, например «test»?

Предположим, что есть файлы, называемые: test, test1, test2.

Попробуйте сделать это (требуется cygwin или такой):

 find . -type f -name 'test*' -printf '%p %i\n' 

Видеть

 man find | less +/'-printf format' 

Заметки :

  • %p обозначает путь к файлу
  • %i обозначает номер inode

Есть несколько способов сделать это с помощью find.

 find . -iname 'test*' -type f -exec ls -i {} \; 

find : команда find
. : каталог для поиска
-iname 'test*' : искать все, что соответствует тесту * независимо от случая
-type f : искать файлы только
-exec ls -i {} \; : выполнить ls -i для каждого найденного файла

 find . -iname 'test*' -type f -printf '%i %f\n' 

find : команда find
. : каталог для поиска
-iname 'test*' : искать все, что соответствует тесту * независимо от случая
-type f : искать файлы только
-printf '%i %f\n' – печатать индексный дескриптор, затем только имя файла (без каталогов) и разделять каждый файл на новую строку

Заметки:

  • -iname for -name если вы хотите быть чувствительным к регистру.
  • Замените . с абсолютным путем, если вы хотите искать что-либо, кроме текущего рабочего каталога.
  • Замените %f на %p для имени файла, включая путь (отличается, используете ли вы относительные или абсолютные пути в вашей команде find).
  • Если вы хотите быть выборочным в своих каталогах, не забудьте параметры -prune и -depth
  • Вы можете быть более конкретным в своей строке и сделать что-то вроде 'test[0-9]' чтобы найти все test0-test9 или 'test[0-9]*' для чего-либо с строкой «test», затем одна цифра, что-нибудь после этого.