¿Cómo obtengo la ruta absoluta al usar el comando find unix?

11

Cómo obtener la ruta absoluta utilizando el comando find.
en realidad estoy ejecutando el siguiente script:

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

pero aquí la variable que $amuestra la ruta comienza desde ./Downloads/filenamepero quiero la ruta absoluta desde /.

Shivam Sharma
fuente

Respuestas:

16

Use find con una ruta absoluta.

find /path/ -size +20M

Imprimirá todo el camino.
Si no conoce el directorio de trabajo, utilice la sustitución de comandos de pwdesta manera:

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

Para obtener su directorio de trabajo

De todos modos, parece que Bash man ahora recomienda usar $()más, ``por lo que debe usar la segunda forma. También puede referirse directamente a la $PWDvariable que contiene el directorio de trabajo de su script y probablemente sería más rápido si tiene que usarlo en un bucle.

find "$PWD" -size +20M
Kiwy
fuente
Pero no tengo camino, solo tengo. como directorio actual entonces?
Shivam Sharma
2
No comience con ., use $(pwd)en su lugar, eso le dará un camino completo.
bsd
8

Puede usar el pwdcomando o imprimir el archivo realpath:

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

Ambos comandos reales le dan la ruta absoluta a los archivos.

Spack
fuente
Pero el segundo está dando find: `realpath ': No
Shivam Sharma
Tararear. Tal vez no lo tenga instalado, aunque lo proporciona el coreutilspaquete. Intenta localizarlo con which realpath.
Spack
No está localizando nada ..
Shivam Sharma
¿Qué sistema estás usando?
Spack
Linux BANE 3.7-trunk-amd64 # 1 SMP Debian 3.7.2-0 + kali8 x86_64 GNU / Linux
Shivam Sharma
0

Para enumerar todos los archivos PNG y JPEG que tienen 7 días de antigüedad con ruta absoluta.

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

Aquí $PWDse agregará a cada archivo que coincida.

aty
fuente