为什么在将 ls 传输到 mkdir 时会出现奇怪的类似时间戳的包含?
Why the weird timestamp-like inclusion when piping ls to mkdir?
我的电脑是 运行 Scientific Linux 6.5 版(Carbon)。
我想在
中创建一组新目录
/newset/
与
中的另一组现有子目录同名
/oldset/
这是/oldset/
中的子目录
$ ls /oldset/
A/
B/
C/
我试过了
$ cd /newset/
$ ls /oldset/ | xargs mkdir
创建具有这些名称的目录
$ ls /newset/
?[0m?[38;5;27mA?[0m/
?[38;5;27mB?[0m/
?[38;5;27mC?[0m/
?[m/
不是我所期待的。我还尝试使用 mkdir 通过 ls 输出进行 for 循环并得到相同的结果。有人可以解释为什么会出现奇怪的结果吗?
在我看来,您 运行 是 ls -F --color
的别名。我现在不在盒子里,但我认为这是正确的设置。我也不知道你为什么要使用 xargs?我会使用命令替换,但正如安德鲁指出的那样,反斜杠 ls 将 off/ignore 别名变为
mkdir $( \ls /oldset)
Don't use ls
排在第一位;使用数组:
names=( /oldset/* )
cd /newset
mkdir "${names[@]#/oldset/}"
或使用循环,尽管这需要多次调用 mkdir
而不是一次。
for d in /oldset/*/; do
mkdir /newset/"${d#/oldset}"
done
我的电脑是 运行 Scientific Linux 6.5 版(Carbon)。 我想在
中创建一组新目录/newset/
与
中的另一组现有子目录同名/oldset/
这是/oldset/
中的子目录$ ls /oldset/
A/
B/
C/
我试过了
$ cd /newset/
$ ls /oldset/ | xargs mkdir
创建具有这些名称的目录
$ ls /newset/
?[0m?[38;5;27mA?[0m/
?[38;5;27mB?[0m/
?[38;5;27mC?[0m/
?[m/
不是我所期待的。我还尝试使用 mkdir 通过 ls 输出进行 for 循环并得到相同的结果。有人可以解释为什么会出现奇怪的结果吗?
在我看来,您 运行 是 ls -F --color
的别名。我现在不在盒子里,但我认为这是正确的设置。我也不知道你为什么要使用 xargs?我会使用命令替换,但正如安德鲁指出的那样,反斜杠 ls 将 off/ignore 别名变为
mkdir $( \ls /oldset)
Don't use ls
排在第一位;使用数组:
names=( /oldset/* )
cd /newset
mkdir "${names[@]#/oldset/}"
或使用循环,尽管这需要多次调用 mkdir
而不是一次。
for d in /oldset/*/; do
mkdir /newset/"${d#/oldset}"
done