Перечислить все файлы с тем же inode числом?

Используйте Shift-F5 вместо этого (или Shift-F6 для переименования) – диалоговое окно будет иметь к полю заполненный именем текущего файла (без пути).

Печально те комбинации не работают при определенных обстоятельствах. Никакая идея, если это зависит от сборки MC, терминала или некоторой библиотеки, которой пользуются. Таким образом, я также добавил это в ~/.mc/menu как альтернатива:

5       Copy
        read -e -i "%f" -p 'Copy file : ' name
        [[ "$name" && "$name" != "%f" ]] && cp "%f" "$name"

6       Rename
        read -e -i "%f" -p 'Rename file : ' name
        [[ "$name" && "$name" != "%f" ]] && mv "%f" "$name"

Затем я просто выбираю файл, поражаю F2, 5 (или 6 для переименования) затем редактируют имя и нажимают Enter. Это требует bash 4 или более новый, из-за read -i опция.

55
24.04.2013, 17:08
4 ответа
find /mount/point -mount -samefile /mount/point/your/file
58
27.01.2020, 19:33
  • 1
    @TheoneManis я просто заметил, что другие части вызова находки не необходимы. find достаточно умно для использования их implicitely. Обычно необходимо дать find путь поиска и должен сказать этому, что это, не оставлю эти файловые системы (через символьные ссылки или точки монтирования). Но при поиске жестких ссылок это ясно на который файловая система искать. спасибо –  Hauke Laging 24.04.2013, 16:51
  • 2
    Hauke, который зависит от версии находки, которую Вы используете. Версия GNU могла бы сделать это, но BSD, который каждый не делает, и это не будет работать как есть над Mac. –  Alan Shutko 24.04.2013, 22:36
  • 3
    можно хотеть добавить -xdev чтобы не убывать в каталоги в других файловых системах, иначе Вы могли бы найти другой файл с тем же inode числом расположенным в другой файловой системе. –  mmoya 17.11.2013, 19:46
  • 4
    Почти эквивалент -samefile на HP-UX -linkedto (хотя это немного отличается: путь поиска должен все еще быть указан, например). –  Dominick Pastore 27.08.2015, 22:37
  • 5
    Обратите внимание, что, если Вы не находитесь в корне Вашей точки монтирования, находка исследует только подпапки текущей папки. Таким образом, необходимо действительно сказать что-то как find /mount/point -samefile /mount/point/your/file –  Calimo 06.04.2017, 16:30

Если у Вас уже есть inode число, можно использовать находку -inum опция:

find /mount/point -xdev -inum 12353538

(некоторые find реализации также поддерживают -mount как эквивалент -xdev хотя только -xdev является стандартным).

54
27.01.2020, 19:33
  • 1
    Не забывайте к CD к корню файловой системы или указывайте его как путь для нахождения, как find /mount/point -inum 12353538. Иначе находка посмотрит только в ниже текущей папки. –  Calimo 06.04.2017, 16:31

С благодарностью за предыдущие ответы.

Обратите внимание, что двоичный файл statможет предоставить не только индексный дескриптор, но и соответствующую точку монтирования устройства. Фрагмент ниже использует это для решения «обычного» варианта использования :

.
fn_hardlinks() {
  declare target; target="$1" && shift
  [ ! -e "$target" ] && \
    { echo "[error] invalid target: '$target'" 1>&2; exit 1; }
  stat '/' 2>/dev/null 1>&2 || \
    { echo "[error] no functioning 'stat' binary found'" 1>&2; exit 1; }
  declare mount; mount="$(stat -c '%m' "$target")"
  declare inode; inode="$(stat -c '%i' "$target")"
  [ "x${mount[-1]}" != "x/" ] && mount+="/"
  find "$mount" -xdev -inum "$inode" 2>/dev/null
}

alias hardlinks=fn_hardlinks

и работает:

> hardlinks./resources/sphinx/gitinfo.py
/home/user/build/z-documentation/resources/sphinx/gitinfo.py
/home/user/build/sphinx-gitinfo/git/sphinx-gitinfo/gitinfo.py

PS :следите за exitпротив returnв зависимости от того, как вы это используете!

0
29.01.2020, 16:43

ffindиз Sleuth Kit может найти все имена файлов для индексного дескриптора, включая имена удаленных файлов.

Например:

sudo ffind -a /dev/sda3 $(stat --format=%i ~/just_a_test)

дает

* /home/me/empty_1
* /home/me/hard_link_to_empty1
/home/me/just_a_test
/home/me/hard_link_to_just_a_test

Записи с предшествующей звездочкой — это предыдущие имена файлов, которые больше не существуют (, поскольку файл был переименован или удален ).


Я использую $(stat --format=%i ~/just_a_test), чтобы получить индекс файла.

Чтобы получить раздел имени файла программно(/dev/sda3в предыдущем примере ), вы можете использоватьdf:

file=~/just_a_test; sudo ffind -a $(df -P "$file" | awk 'END{print $1}') $(stat --format=%i "$file")
1
07.02.2021, 14:40

Теги

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