Zuweisen eines Dateiverzeichnisses zu einer Variablen

Zuweisen eines Dateiverzeichnisses zu einer Variablen

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 .txtDateien im /root/tmpdirOrdner:

[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, .txtnicht nach Inhalten. Außerdem ist diese Suche rekursiv, Sie können die Argumente ändern, um nur in einem Ordner zu suchen.

verwandte Informationen