GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo puedo forzar solo rutas relativas en la salida de búsqueda?

Puedes usar el %P formato en el -printf directiva:

find ${rootDir} -name '*.doc' -printf "%P\n"

mostrará en su ejemplo:

subdir/test.doc
second.doc

A continuación, puede utilizar este find lista en un for expresión, para ejecutar nuestro comando exec, como en:

for f in $( find ${rootDir} -name '*.doc' -printf "%P\n" );
do
    tar rvf docs.tar ${f}
done

Si ejecuta find desde el directorio raíz deseado y no especifique un punto de partida absoluto en find 's, generará rutas relativas al tar invocaciones de comandos que construye. Así:

cd $rootDir
find . -name '*doc' -exec tar rvf docs.tar {} \;

Si no desea cambiar el directorio de trabajo actual de forma permanente y está utilizando bash o similar a tu caparazón que podrías hacer

pushd $rootDir
find . -name '*doc' -exec tar rvf docs.tar {} \;
popd

en su lugar.

Tenga en cuenta que pushd/popd no están presentes en todos los shells, así que consulte la página del manual según corresponda. Están presentes en bash pero no en la implementación base de sh, por lo que al usar explícitamente /bin/bash puede confiar en ellos, no puede si un script solicita /bin/sh en su lugar (ya que esto puede asignarse a un shell más pequeño que no tiene las mejoras de bash)


Linux
  1. ¿Cómo puedo crear un archivo en cada carpeta?

  2. ¿Cómo puedo ejecutar dos2unix en un directorio completo?

  3. ¿Cómo puedo encontrar archivos que solo tienen ciertos permisos para el propietario?

  4. ¿Cómo puedo instalar un RPM sin ser root?

  5. ¿Cómo puedo encontrar las interfaces de red disponibles?

¿Cómo puedo crear un archivo tar de varias partes en Linux?

¿Cómo puedo hacer un chmod recursivo solo en directorios?

¿Cómo puedo encontrar todos los archivos vinculados en un sistema de archivos?

¿Cómo puedo ver la salida de dmesg a medida que cambia?

¿Cómo encontrar solo directorios sin subdirectorios?

¿Cómo puedo ordenar la salida du -h por tamaño?