Как получить абсолютный путь с помощью команды find unix

11

Как получить абсолютный путь с помощью команды find.
на самом деле я запускаю следующий скрипт:

find . -size +20M | while read a
do
     i=$(echo $a | sed 's:/: :g')
     echo $a;
     j=($i)
     fileName=${j[${#j[@]}-1]}
     userName=${j[${#j[@]}-3]}
done

но здесь переменная, $aпоказывающая путь, начиная с, ./Downloads/filenameно я хочу абсолютный путь от /.

Шивам Шарма
источник

Ответы:

16

Используйте поиск с абсолютным путем.

find /path/ -size +20M

Он напечатает весь путь.
Если вы не знаете рабочий каталог, используйте подстановку команд pwdследующим образом:

find "`pwd`" -size +20M 
   #or like this:
find "$(pwd)" -size +20M

Чтобы получить ваш рабочий каталог

Во всяком случае, похоже, что Bash Man сейчас советуют использовать $()поверх, ``поэтому вам следует использовать вторую форму. Вы также можете, вероятно, обратиться непосредственно к $PWDпеременной, содержащей рабочий каталог вашего скрипта, и, вероятно, будет быстрее, если вы будете использовать его в цикле.

find "$PWD" -size +20M
Kiwy
источник
Но у меня нет пути, у меня есть только. как текущий каталог тогда?
Шивам Шарма
2
Не начинайте с ., используйте $(pwd)вместо этого, это даст вам полный путь.
BSD
8

Вы можете использовать pwdкоманду или распечатать файл realpath:

$ find "$(pwd)" -size +20M
$ find . -size +20M -exec realpath {} +

Обе команды реально дают вам абсолютный путь к файлам.

Spack
источник
Но второе дает находку: `realpath ': нет такого файла или каталога
Shivam Sharma
Hum. Может быть, он не установлен, хотя он предоставляется coreutilsпакетом. Попробуйте найти это с which realpath.
Спак
Он ничего не находит ..
Шивам Шарма
Какую систему вы используете?
Спак
Linux BANE 3.7-trunk-amd64 # 1 SMP Debian 3.7.2-0 + kali8 x86_64 GNU / Linux
Шивам Шарма
0

Список всех файлов PNG и JPEG, возраст которых 7 дней, с абсолютным путем.

$ find $PWD/ -mtime -7 -print -exec grep -e ".png\|.jpg" {} \;

Здесь $PWDбудут добавлены все найденные файлы.

Аты
источник