/ / Warum die seltsame timestamp-artige Einbeziehung, wenn ls an mkdir weitergeleitet wird? - Linux, bash, mkdir, ls, xargs

Warum die seltsame timestamp-artige Inklusion, wenn man ls nach mkdir leitet? - Linux, Bash, mkdir, ls, xargs

Auf meinem Computer wird Scientific Linux Version 6.5 (Carbon) ausgeführt. Ich möchte einen neuen Satz von Verzeichnissen in erstellen

/newset/

mit den gleichen Namen wie ein anderer Satz vorhandener Unterverzeichnisse in

/oldset/

Hier sind die Unterverzeichnisse in / oldset /

$ ls /oldset/
A/
B/
C/

Ich habe es versucht

$ cd /newset/
$ ls /oldset/ | xargs mkdir

Welches macht Verzeichnisse mit diesen Namen

$ ls /newset/
?[0m?[38;5;27mA?[0m/
?[38;5;27mB?[0m/
?[38;5;27mC?[0m/
?[m/

Nicht das, was ich erwarte. Ich habe auch versucht, mit mkdir eine for-Schleife durch die ls-Ausgabe zu machen und habe das gleiche Ergebnis erzielt. Kann jemand erklären, warum das seltsame Ergebnis ist?

Antworten:

1 für die Antwort № 1

Für mich sieht es so aus, als würdest du gerne laufen ls -F --color. Ich bin gerade nicht in einer Box, aber ich denke, das istdie richtige einstellung. Ich weiß auch nicht, warum Sie xargs verwenden? Ich würde die Befehlssubstitution verwenden, aber, wie Andrew betonte, Backslash ls, um den Alias ​​auszuschalten / zu ignorieren.

 mkdir $( ls /oldset)

2 für die Antwort № 2

Benutze es nicht ls an erster Stelle; benutze ein Array:

names=( /oldset/* )
cd /newset
mkdir "${names[@]#/oldset/}"

oder verwenden Sie eine Schleife, obwohl dies mehrere Aufrufe erfordert mkdir statt nur einer.

for d in /oldset/*/; do
mkdir /newset/"${d#/oldset}"
done