View previous topic :: View next topic |
Author |
Message |
kami22 Tux's lil' helper
Joined: 14 Apr 2006 Posts: 116
|
Posted: Mon Mar 22, 2010 6:48 am Post subject: Multiple Files in Shell testen? |
|
|
Hi,
kurze Frage zu shell:
Wenn ich checken will ob ein Filetyp in einem Verzeichnis existiert wie mache ich das? if [ -f /home/kami/*.txt ]; then hat das problem das es nicht geht wenn es mehrere txt dateien in dem verzeichnis gibt.
Gruß kami |
|
Back to top |
|
|
Finswimmer Bodhisattva
Joined: 02 Sep 2004 Posts: 5467 Location: Langen (Hessen), Germany
|
Posted: Mon Mar 22, 2010 7:12 am Post subject: |
|
|
[ $(ls /tmp/*.tx2342t 2>/dev/null|wc -l) -gt 0 ] && echo true
wäre eine Möglichkeit.
Oder du versuchst es mit find.
Ich denke, da gibt es mehrere Möglichkeiten.
Gruß
Tobi _________________ Bitte auf Rechtschreibung, korrekte Formatierung und Höflichkeit achten!
Danke |
|
Back to top |
|
|
slick Bodhisattva
Joined: 20 Apr 2003 Posts: 3495
|
Posted: Mon Mar 22, 2010 10:31 am Post subject: |
|
|
(alle ungetestet)
find
Code: | if [ "`find /pfad -maxdepth 1 -type f -iname '*.txt' 2> /dev/null`" == "" ] ; then ... |
ls
Code: | if [ "`ls -1 /pfad/*.txt 2> /dev/null`" == "" ] ; then ... |
ls & grep
Code: | if ls -1 /pfad/ | grep ".txt$" &> /dev/null ; then ... |
|
|
Back to top |
|
|
69719 l33t
Joined: 20 Sep 2004 Posts: 865
|
Posted: Mon Mar 22, 2010 11:52 am Post subject: |
|
|
Oder auch
Code: |
ls *.dlc &>/dev/null && {
echo "datei existiert."
...
}
|
|
|
Back to top |
|
|
Genone Retired Dev
Joined: 14 Mar 2003 Posts: 9625 Location: beyond the rim
|
Posted: Mon Mar 22, 2010 12:45 pm Post subject: |
|
|
Noch ne Variante ohne externe Programme:
Code: | if [ "$(echo *.txt)" != "*.txt" ]; then
# Textdatei vorhanden
else
# keine Textdatei vorhanden
fi |
|
|
Back to top |
|
|
kami22 Tux's lil' helper
Joined: 14 Apr 2006 Posts: 116
|
Posted: Mon Mar 22, 2010 6:39 pm Post subject: |
|
|
Ich habe jetzt folgende Variante: if $(ls /home/kami/*.txt | grep -q 'txt'); then
wie findet ihr die?
Gruß kami |
|
Back to top |
|
|
Genone Retired Dev
Joined: 14 Mar 2003 Posts: 9625 Location: beyond the rim
|
Posted: Mon Mar 22, 2010 10:27 pm Post subject: |
|
|
kami22 wrote: | Ich habe jetzt folgende Variante: if $(ls /home/kami/*.txt | grep -q 'txt'); then
wie findet ihr die? |
Aus mehreren Gründen schlecht:
1) `grep 'txt'` würde z.B. auch bei test-txt.sh zutreffen
2) weiss jetzt nicht ob `if $(command); then` legal ist (insbesondere ohne Quotes), würde ich aber zumindest als schlechten Stil ankreiden. Entweder `if command; then` oder `if [ -n "$(command)" ]; then`
3) ist jetzt sehr subjektiv, aber mMn hat `ls`in Skripten nix verloren. |
|
Back to top |
|
|
kami22 Tux's lil' helper
Joined: 14 Apr 2006 Posts: 116
|
Posted: Tue Mar 23, 2010 6:04 am Post subject: |
|
|
Hi,
okay danke Genone.
Dann nehme ich deine Variante.
Gruß kami |
|
Back to top |
|
|
schachti Advocate
Joined: 28 Jul 2003 Posts: 3765 Location: Gifhorn, Germany
|
Posted: Tue Mar 23, 2010 6:30 am Post subject: |
|
|
Genone wrote: | 3) ist jetzt sehr subjektiv, aber mMn hat `ls`in Skripten nix verloren. |
Warum das? _________________ Never argue with an idiot. He brings you down to his level, then beats you with experience.
How-To: Daten verschlüsselt auf DVD speichern. |
|
Back to top |
|
|
Genone Retired Dev
Joined: 14 Mar 2003 Posts: 9625 Location: beyond the rim
|
Posted: Tue Mar 23, 2010 1:06 pm Post subject: |
|
|
schachti wrote: | Genone wrote: | 3) ist jetzt sehr subjektiv, aber mMn hat `ls`in Skripten nix verloren. |
Warum das? |
Weils eigentlich immer ne bessere Option gibt. Um nur Dateinamen aufzulisten reicht die Shell Expansion alleine aus, um detaillierte Dateiinformationen zu bekommen gitb es `stat`, und für kompliziertere Aufgaben kann man `find` nehmen. Und wenn man sich das Ausgabeformat von `ls -l` ansieht merkt man schnell dass es nicht sonderlich skriptfreundlich ist.
Ist aber wie gesagt meine sehr subjektive Ansicht. |
|
Back to top |
|
|
|