GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich nur relative Pfade in der Find-Ausgabe erzwingen?

Sie können den %P verwenden Format im -printf Direktive:

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

wird in Ihrem Beispiel angezeigt:

subdir/test.doc
second.doc

Sie können dann diesen find verwenden Liste in einem for Ausdruck, um unseren exec-Befehl auszuführen, wie in:

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

Wenn Sie find ausführen aus dem gewünschten Wurzelverzeichnis und geben Sie in find keinen absoluten Startpunkt an 's Optionen gibt es relative Pfade zu tar aus Befehlsaufrufe, die es erstellt. So:

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

Wenn Sie das aktuelle Arbeitsverzeichnis nicht dauerhaft ändern möchten und bash verwenden oder ähnlich wie Ihre Shell, die Sie tun könnten

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

stattdessen.

Beachten Sie, dass pushd/popd nicht in allen Shells vorhanden sind, überprüfen Sie daher gegebenenfalls die Manpage. Sie sind in bash vorhanden, aber nicht in der Basis-sh-Implementierung, also während der expliziten Verwendung von /bin/bash Sie können sich darauf verlassen, aber nicht, wenn ein Skript nach /bin/sh fragt stattdessen (da dies möglicherweise auf eine kleinere Shell abgebildet wird, die nicht die Verbesserungen von bash hat)


Linux
  1. Wie kann ich eine MD5-Prüfsumme eines Verzeichnisses berechnen?

  2. Wie schließe ich absolute Pfade für tar aus?

  3. Linux-Befehl:Wie findet man nur Textdateien?

  4. Wie verschiebe ich einen relativen symbolischen Link?

  5. Wie finde ich meine Shell-Version mit einem Linux-Befehl?

Wie kann ich in jedem Ordner eine Datei erstellen?

Wie kann ich dos2unix auf einem ganzen Verzeichnis ausführen?

Wie kann ich Dateien finden, die nur bestimmte Rechte für den Besitzer haben?

Wie kann ich ein RPM installieren, ohne root zu sein?

Wie finde ich alle fest verlinkten Dateien in einem Dateisystem?

Wie finde ich verfügbare Netzwerkschnittstellen?