我的电脑正在运行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循环,并获得相同的结果。有人可以解释为什么这个奇怪的结果吗?
答案 0 :(得分:2)
ls
;使用数组:
names=( /oldset/* )
cd /newset
mkdir "${names[@]#/oldset/}"
或使用循环,但这需要多次调用mkdir
而不只是一次。
for d in /oldset/*/; do
mkdir /newset/"${d#/oldset}"
done
答案 1 :(得分:1)
对我来说,看起来你正在运行别名为ls -F --color
的ls。我现在不在盒子里,但我认为这是正确的设置。我也不知道你为什么使用xargs?我会使用命令替换,但正如安德鲁指出的那样,反斜杠可以关闭/忽略别名。
mkdir $( \ls /oldset)