Bitte um Hilfe.
Muss im Supportbereich noch eine Faden zu dem Thema(Find Frontend) aufmachen. Script war in die Jahre gekommen, nun etwas geändert.(wollte das so nicht einstellen) Im Prinzip läuft das Script.
Problem ist Abbruch von find + etc.
Wie an $!(find) in den Zeilen 91 und 106 kommen?
tee .... läuft u.U. weiter
(-exec) file --mime-type läuft u.U. weiter
In Zeile 44 ist Abbruch Funktion vorhanden.
Falls sonst noch was nicht OK ist..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 | #!/bin/bash #exec 2>> $HOME/find-frontend.log #set -x scriptpfad=$(readlink -f $0) findgesamt=~/.cache/findgesamt.txt findselektiert=~/.cache/findselektiert.txt #definiere Standard Tiefe bei 0 tiefebeinull=10 dir1=~/.cache/finddir1 dir2=~/.cache/finddir2 if [ "$1" ]; then if [ -d "$1" ]; then dir="$1" echo "$dir" > $dir1 fi else read dir < $dir1 fi #notify-send "$dir" findaktiv-f() { sleep 0.5 (yad --title="find_ist_aktiv" \ --progress \ --pulsate \ --text-align=center \ --text=": $1" \ --no-focus \ --on-top \ --geometry=350x20-30-30 \ --no-buttons)& #--undecorated sleep 1 findaktiv=1 while [ "$findaktiv" -eq "1" ] do if [ "$(pidof find)" ]; then findaktiv=1;else findaktiv=0;fi sleep 0.5 done killwin=$(xdotool search --name "find_ist_aktiv" getwindowpid) if [ "$killwin" ]; then kill $killwin;fi } killfind-f() { killall -9 find } ################### YAD Eingabe ############################ yadeingabe=$(yad --title="Dateien suchen - Muster eingeben" \ --width=500 --center --borders=40 --buttons-layout=center \ --form --selectable-labels \ --separator=";" \ --text="https://wiki.ubuntuusers.de/find/\n-mmin -20\n-mtime -3 # jünger als 3 Tage, + und - kann gesetzt werden\n-n-amin -5 # sucht nach Dateien, auf die zuletzt vor n bis n+1 zugegriffen (a=accessed)\n-size +512k -size +100M -size +1G" \ --field=Muster "**" \ --field=Param "" \ --field="Groß Kleinschreibung ignorieren:CHK" true \ --field="Tiefe:NUM" 0 \ --field="Ordner:DIR" "$dir" \ --field="Anwen:CBE" featherpad\!mpv\!okular\!gwenview\!vlc\!audacious \ --field="Bilder:CHK" false \ --field="Video:CHK" false \ --field="Audio:CHK" false \ --field="Text:CHK" false \ --button="kfind":"kfind $dir" \ --button="Catfish":"catfish --path=$dir" \ --button="Beenden":1 \ --button="OK":0) ret=$?;if ! [ "$ret" -eq "0" ]; then exit;fi muster=$(echo "$yadeingabe" | awk -F ";" {'print $1'}) parameter=$(echo "$yadeingabe" | awk -F ";" {'print $2'}) namegrossklein=$(echo "$yadeingabe" | awk -F ";" {'print $3'}) tiefe=$(echo "$yadeingabe" | awk -F ";" {'print $4'}) ordner=$(echo "$yadeingabe" | awk -F ";" {'print $5'}) anwendung=$(echo "$yadeingabe" | awk -F ";" {'print $6'}) if [ "$(echo "$yadeingabe" | awk -F ";" {'print $7'})" == "TRUE" ]; then mime=image;fi if [ "$(echo "$yadeingabe" | awk -F ";" {'print $8'})" == "TRUE" ]; then mime=video;fi if [ "$(echo "$yadeingabe" | awk -F ";" {'print $9'})" == "TRUE" ]; then mime=audio;fi if [ "$(echo "$yadeingabe" | awk -F ";" {'print $10'})" == "TRUE" ]; then mime=text;fi echo "$ordner" > $dir1 ################### find ############################ if [ "$namegrossklein" == "TRUE" ]; then name="-iname"; else name="-name";fi if [ "$tiefe" -eq "0" ]; then tiefe="-maxdepth $tiefebeinull";else tiefe="-maxdepth $tiefe";fi if [ "$muster" == "**" ] || [ "$muster" == "*" ]; then muster2=nv;fi (findaktiv-f $muster2)& export -f killfind-f if [ "$mime" ]; then find "$ordner" $tiefe -type f $parameter $name "$muster" -exec file --mime-type {} \+ | awk -v search="$mime" -F: '{if ($2 ~ search"/") print $1}' | tee $findgesamt | yad \ --title "Dateien suchen - Ergebnis" \ --separator=" " --borders=1 --buttons-layout=center \ --width=1000 --height=600 --center --list \ --selectable-labels \ --text="find $ordner $tiefe $parameter $mime Muster:$muster\n$anwendung" \ --button="Neue Suche":"$scriptpfad &" \ --button="Gesamtliste":"xdg-open $findgesamt" \ --button="D.kopieren nach":10 \ --button="Stop find":"bash -c 'killfind-f'" \ --button="Beenden":1 \ --button="OK":0 \ --column "Files" --multiple > $findselektiert ret=$? else find "$ordner" $tiefe -type f $parameter $name "$muster" | tee $findgesamt | yad \ --title "Dateien suchen - Ergebnis" \ --separator=" " --borders=1 --buttons-layout=center \ --width=1000 --height=600 --center --list \ --selectable-labels \ --text="find $ordner $tiefe $parameter Muster:$muster\n$anwendung" \ --button="Neue Suche":"$scriptpfad &" \ --button="Gesamtliste":"xdg-open $findgesamt" \ --button="D.kopieren nach":10 \ --button="Stop find":"bash -c 'killfind-f'" \ --button="Beenden":1 \ --button="OK Anw.":0 \ --column "Files" --multiple > $findselektiert ret=$? fi if [ "$ret" -eq "1" ] || [ "$ret" -eq "252" ]; then killfind-f exit fi if [ ! -s $findgesamt ]; then notify-send "Suchfehler, Abbruch";exec $scriptpfad;exit;fi if [ ! -s $findselektiert ]; then notify-send "Keine Dateien ausgewählt, Abbruch";exec $scriptpfad;exit;fi if [ "$ret" -eq "10" ]; then read dir < $dir2 dir=$(yad --center --file --directory --filename="$dir" --width=900 --height=600) ret=$?;if [ "$ret" -ne "0" ]; then exit;fi echo "$dir" > $dir2 while read -r line do cp "$line" "$dir" done < $findselektiert xdg-open "$dir" exit fi #if [ "$ret" -ne "0" ]; then exit; fi $anwendung $(cat $findselektiert) |