bash: legen Sie Liste der Dateien in eine variable und aber die Größe des Arrays ist 1

Ich bin mit einer Auflistung der Dateien in einem Verzeichnis Durchlaufen Sie okay, ABER ich muss wissen, wie viele es auch sind. ${#dirlist[@]} ist immer 1, aber die for-Schleife funktioniert?

#!/bin/bash
prefix="xxx"; # as example

len=${#prefix}; # string length
dirlist=`ls ${prefix}*.text`;
qty=${#dirlist[@]};  # sizeof array is always 1
for filelist in $dirlist
do
    substring="${filelist:$len:-5}";
    echo "${substring}/${qty}";
done

Ich habe Dateien xxx001.text bis zu xxx013.text

aber alles was ich bekomme ist 001/1 002/1 003/1

  • verwenden dirlist=($(ls ${prefix}*.text)) erstellen Sie ein array
  • Cheers Kev musste ich die Schleife für filelist in ${dirlist[@]}
  • Sie gehörten zu den ersten, und gab mir was ich brauchte, können Sie senden eine Antwort bitte
  • als David Ongaro, kommentierte in einer der Antworten, verwenden Sie dirlist=(${prefix}*.text), ein array zu erstellen. Es handle Dateinamen mit Leerzeichen erfolgreich.
InformationsquelleAutor Waygood | 2013-03-05
Schreibe einen Kommentar