Используйте 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
опция.
find /mount/point -mount -samefile /mount/point/your/file
Если у Вас уже есть inode число, можно использовать находку -inum
опция:
find /mount/point -xdev -inum 12353538
(некоторые find
реализации также поддерживают -mount
как эквивалент -xdev
хотя только -xdev
является стандартным).
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
в зависимости от того, как вы это используете!
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")
find
достаточно умно для использования их implicitely. Обычно необходимо датьfind
путь поиска и должен сказать этому, что это, не оставлю эти файловые системы (через символьные ссылки или точки монтирования). Но при поиске жестких ссылок это ясно на который файловая система искать. спасибо – Hauke Laging 24.04.2013, 16:51-xdev
чтобы не убывать в каталоги в других файловых системах, иначе Вы могли бы найти другой файл с тем же inode числом расположенным в другой файловой системе. – mmoya 17.11.2013, 19:46-samefile
на HP-UX-linkedto
(хотя это немного отличается: путь поиска должен все еще быть указан, например). – Dominick Pastore 27.08.2015, 22:37find /mount/point -samefile /mount/point/your/file
– Calimo 06.04.2017, 16:30