Ich habe ein Verzeichnis mit fast 400 Dateien und möchte alle TXT-Dateien in einem Bash-Skript, das ich schreibe, einer einzelnen Variable zuweisen. Allerdings bin ich mir nicht ganz sicher, wie ich das machen soll. Mich interessieren lediglich die Dateinamen selbst, nicht der Inhalt der besagten Dateien.
Antwort1
Wenn Sie die Namen möchten, weisen Sie sie am besten einem Array zu.
names=( *.txt )
Wenn Sie den Inhalt wollen, dann
contents="$( cat *.txt )"
Antwort2
Machen Sie etwas wie das hier. Dieser Einzeiler erzeugt ein Array für alle .txt
Dateien im /root/tmpdir
Ordner:
[root@localhost ~]# export LIST=() ; for file in `find /root/tmpdir -name *.txt -exec readlink -e '{}' \;` ; do LIST+=($file) ; done
[root@localhost ~]# echo ${LIST[*]}
/root/tmpdir/newdir/file.txt /root/tmpdir/file.txt
[root@localhost ~]#
Oder Sie können einfach eine Variable erstellen, die die durch Folgendes getrennten Dateinamen enthält ,
:
[root@localhost ~]# export LIST; for file in `find /root/tmpdir -name *.txt -exec readlink -e '{}' \;` ; do LIST=$LIST$file, ; done
[root@localhost ~]# echo $LIST
/root/tmpdir/newdir/file.txt,/root/tmpdir/file.txt,
PS
Beide Beispiele suchen nach Dateierweiterungen, .txt
nicht nach Inhalten. Außerdem ist diese Suche rekursiv, Sie können die Argumente ändern, um nur in einem Ordner zu suchen.