Portál AbcLinuxu, 29. prosince 2025 05:30
for i in "`ls //f/strom`";
do mp3=`ls //f/strom/"$i" |grep -c mp3`
if [ "$mp3" == "0" ]
then
echo "$i"
fi;
done
Tusi nekdo, kde se deje chyba? (Mozna je to zbytecne slozity, ale stejne me zajima, kde jsem udelal chybu... Diky!
Spoustim to pod win-bashem, proto ty divne cesty, nicmene stejne se to chova i na linuxu s linuxovymi cestami...
for i in $(ls //f/strom); do mp3=$(ls //f/strom/"${i}" |grep -c mp3); if [ "$mp3" == "0" ]; then echo "$i"; fi; done
, toto by to hadam pomohlo:
ls -1 //f/strom | while read adresar; do mp3=$(ls //f/strom/"${adresar}" | grep -c mp3); if [ "$mp3" == "0" ]; then echo ${adresar}; fi done
for i in `find /f/strom/ \! -name '*.mp3'`; do
echo ${i%/*}
done
for i in //f/strom/*; do mp3=`ls "$i" |grep -c mp3`; if [ "$mp3" == "0" ]; then echo "$i"; fi; doneNebo dalsi varianta (takhle bych to napsal asi ja):
for i in //f/strom/*; do (cd "$i"; ls *.mp3 1>/dev/null 2>&1 || echo "$i"); done
//f/strom/*nesmi byt v uvozovkach. Dalsi moznost je ze adresar //f/strom/ je prazdny (pak to nahradi puvodnim vyrazem - //f/strom/*). Jinak kdyz to zkusim:
chocholj@cz995891 ~ $ ls -R ~/tmp/b1 -w 1 /home/chocholj/tmp/b1: a b c d e f g /home/chocholj/tmp/b1/a b: q w.mp3 /home/chocholj/tmp/b1/c d: /home/chocholj/tmp/b1/e f g: chocholj@cz995891 ~ $ for i in ~/tmp/b1/*; do mp3=`ls "$i" |grep -c mp3`; if [ "$mp3" == "0" ]; then echo "$i"; fi; done /home/chocholj/tmp/b1/c d /home/chocholj/tmp/b1/e f gTak se to chava snad podle ocekavani.
#!/usr/bin/python
import os
for root, dirs, files in os.walk('.'):
for filename in files:
if filename.lower().endswith('.mp3'):
break
else:
print root
-maxdepth 1
( find -type d ; find | sed -n '/\.mp3$/s;/[^/]*$;;p' ) | sort | uniq -c | grep '^[[:space:]]*1 '
cd //f
for i in `cat missing.txt`;
do for m in ls `ls $i`; do echo $m; done;
done
Muzu takhle zaloopovat dve for do sebe? Pac mi to vypisuje ": No such file or directory"... Kdyz misto `ls $i` dam $i/*, nahradi to prvni dva znaky v ceste "/*" ...je to nejaka vlastnost starsiho bashe, musi se na nej jinak?
cd /f
<missing.txt while read dirname; do
echo "dirname: $dirname"
for filename in `ls $dirname`; do
echo "filename: $filename";
done;
donea pro blok textu používejte značku pre i když ten code láká víc.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.