Frage Bash find Befehl ausführliche Ausgabe


Gibt es eine Möglichkeit, die Bash zu erzählen? find Befehl, um auszugeben, was es tut (ausführlicher Modus)?

Zum Beispiel für den Befehl: find /media/1Tb/videos -maxdepth 1 -type d -mtime +7 -exec rm -rf {} \; ausgeben:

Found /media/1Tb/videos/102, executing rm -rf /media/1Tb/videos/102
...

37
2017-10-07 07:59


Ursprung




Antworten:


Du könntest etwas damit anfangen -printf, aber am leichtesten ist es, anzuheften -print am Ende. Dies zeigt, was erfolgreich gelöscht wurde.


52
2017-10-07 08:02



Diese Antwort kann bei der Verwendung auf alles angewendet werden find, also Daumen hoch - Alex
meine find Liebe wuchs ein anderes nur ein kleines bisschen. Vielen Dank :) - Darragh Enright
Für mich verwenden Sie "-exec rm -vf {} \;" hat besser funktioniert. - djangofan
Nett! Funktioniert mit -delete auch: find -L . -type l -delete -print - runlevel0


Wie wäre es, nur zu verwenden rm -vf für ausführliche rm-Ausgabe.

$ touch file1 file2 file3
$ find . -name "file?" -exec rm -vf {} \;
removed `./file2'
removed `./file3'
removed `./file1'

17
2017-10-07 08:02



die ausführliche Option für rm ist cool, aber wenn ich es durch etwas anderes ersetze, kann ich nicht mehr sehen, an welchen Dateien gearbeitet wird (es sei denn, ich benutze es echo Innerhalb -exec) - Alex


Eine Alternative besteht darin, die Befehle von ausführen zu lassen sh -x:

$ find . -type f -print0 | xargs -0 -n1 echo rm | sh -x
+ rm ./file1
+ rm ./file2
+ rm ./file3

8
2017-10-07 11:08



shell  debug Modus wird klar genug sein, was passiert ist. Vielen Dank - sdkks


Es gibt auch find -D xxxx das könnte in manchen Fällen helfen.

 $ find -D help
 Valid arguments for -D:
 help       Explain the various -D options
 tree       Display the expression tree
 search     Navigate the directory tree verbosely
 stat       Trace calls to stat(2) and lstat(2)
 rates      Indicate how often each predicate succeeded
 opt        Show diagnostic information relating to optimisation
 exec       Show diagnostic information relating to -exec, -execdir, -ok and -okdir

Unten sind zwei Beispiele von find -D search:

Mit RHEL 6.3 (find v4.4):

$ mkdir -p aa/bb
$ touch aa/11 aa/22 aa/33 aa/bb/44 aa/bb/55
$ find -D search aa -type f -delete
consider_visiting: fts_info=FTS_D , fts_level= 0, prev_depth=-2147483648 fts_path=`aa', fts_accpath=`aa'
consider_visiting: fts_info=FTS_D , fts_level= 1, prev_depth=0 fts_path=`aa/bb', fts_accpath=`bb'
consider_visiting: fts_info=FTS_NSOK, fts_level= 2, prev_depth=1 fts_path=`aa/bb/55', fts_accpath=`55'
consider_visiting: fts_info=FTS_NSOK, fts_level= 2, prev_depth=2 fts_path=`aa/bb/44', fts_accpath=`44'
consider_visiting: fts_info=FTS_DP, fts_level= 1, prev_depth=2 fts_path=`aa/bb', fts_accpath=`bb'
consider_visiting: fts_info=FTS_NSOK, fts_level= 1, prev_depth=1 fts_path=`aa/22', fts_accpath=`22'
consider_visiting: fts_info=FTS_NSOK, fts_level= 1, prev_depth=1 fts_path=`aa/33', fts_accpath=`33'
consider_visiting: fts_info=FTS_NSOK, fts_level= 1, prev_depth=1 fts_path=`aa/11', fts_accpath=`11'
consider_visiting: fts_info=FTS_DP, fts_level= 0, prev_depth=1 fts_path=`aa', fts_accpath=`aa'
$ find --version
find (GNU findutils) 4.4.2
Copyright (C) 2007 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Eric B. Decker, James Youngman, and Kevin Dalley.
Built using GNU gnulib version e5573b1bad88bfabcda181b9e0125fb0c52b7d3b
Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION SELINUX FTS() CBO(level=0)

Mit Cygwin 1.7 (find 4.5):

$ mkdir -p aa/bb
$ touch aa/11 aa/22 aa/33 aa/bb/44 aa/bb/55
$ find -D search aa -type f -delete
consider_visiting (early): 'aa': fts_info=FTS_D , fts_level= 0, prev_depth=-2147483648 fts_path='aa', fts_accpath='aa'
consider_visiting (late): 'aa': fts_info=FTS_D , isdir=1 ignore=1 have_stat=1 have_type=1
consider_visiting (early): 'aa/11': fts_info=FTS_NSOK, fts_level= 1, prev_depth=0 fts_path='aa/11', fts_accpath='11'
consider_visiting (late): 'aa/11': fts_info=FTS_NSOK, isdir=0 ignore=0 have_stat=0 have_type=1
consider_visiting (early): 'aa/22': fts_info=FTS_NSOK, fts_level= 1, prev_depth=1 fts_path='aa/22', fts_accpath='22'
consider_visiting (late): 'aa/22': fts_info=FTS_NSOK, isdir=0 ignore=0 have_stat=0 have_type=1
consider_visiting (early): 'aa/33': fts_info=FTS_NSOK, fts_level= 1, prev_depth=1 fts_path='aa/33', fts_accpath='33'
consider_visiting (late): 'aa/33': fts_info=FTS_NSOK, isdir=0 ignore=0 have_stat=0 have_type=1
consider_visiting (early): 'aa/bb': fts_info=FTS_D , fts_level= 1, prev_depth=1 fts_path='aa/bb', fts_accpath='bb'
consider_visiting (late): 'aa/bb': fts_info=FTS_D , isdir=1 ignore=1 have_stat=1 have_type=1
consider_visiting (early): 'aa/bb/44': fts_info=FTS_NSOK, fts_level= 2, prev_depth=1 fts_path='aa/bb/44', fts_accpath='44'
consider_visiting (late): 'aa/bb/44': fts_info=FTS_NSOK, isdir=0 ignore=0 have_stat=0 have_type=1
consider_visiting (early): 'aa/bb/55': fts_info=FTS_NSOK, fts_level= 2, prev_depth=2 fts_path='aa/bb/55', fts_accpath='55'
consider_visiting (late): 'aa/bb/55': fts_info=FTS_NSOK, isdir=0 ignore=0 have_stat=0 have_type=1
consider_visiting (early): 'aa/bb': fts_info=FTS_DP, fts_level= 1, prev_depth=2 fts_path='aa/bb', fts_accpath='bb'
consider_visiting (late): 'aa/bb': fts_info=FTS_DP, isdir=1 ignore=0 have_stat=1 have_type=1
consider_visiting (early): 'aa': fts_info=FTS_DP, fts_level= 0, prev_depth=1 fts_path='aa', fts_accpath='aa'
consider_visiting (late): 'aa': fts_info=FTS_DP, isdir=1 ignore=0 have_stat=1 have_type=1
$ find --version
find (GNU findutils) 4.5.11
Packaged by Cygwin (4.5.11-1)
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Eric B. Decker, James Youngman, and Kevin Dalley.
Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION FTS(FTS_CWDFD) CBO(level=2)

1
2017-09-10 12:08





@ Hlovdavs Antworten war genug für mich, aber ich habe einige Änderungen für meinen eigenen Gebrauch gemacht

find . -name 'application*.yml' -print0 | xargs -0 -I %% bash -c 'rm -v "$1"' -- "%%"

Erläuterung

  1. finden
  2. pattern
  3. Drucken null getrennt, wichtig, wenn Sie Dateinamen mit Leerzeichen oder ungewöhnlichen Zeichen haben
  4. xargs lesen null getrennt, setzen Sie jeden Datensatzplatzhalter auf %% Dies gewährleistet auch jedes Mal, wenn nur ein Argument verwendet wird
  5. bash Befehl, One-Liner, alles geht hinein, muss einzeln zitiert werden '
  6. -- was alles bedeutet, was ich danach mache, ist es nicht xargs oder bash Optionen, aber Positionsparameter zu meinem One-Liner-Skript
  7. Der Platzhalter wird als einzelnes Argument angegeben, indem ein Zitat angegeben wird, ein einzelnes oder ein doppeltes Zitat spielt keine Rolle. Wenn Sie doppelte Anführungszeichen verwenden, können Sie auch Shell-Variablen einfügen.
  8. Innerhalb bash Skript, auf das Sie zugreifen können %% wie $1, Positionsargument Nr. 1

Hinweis: Sie können ändern %% mit etwas, nur sicherstellen, dass Sie es für nichts anderes als einen Platzhalter verwenden müssen. Mit Dollar $ oder @ ist vielleicht nicht gut, außer es ist doppelt @ mögen @@.


1
2017-09-27 05:10