2016-04-16 2 views
0

私のコンピュータでScientific Linux 6.5(Carbon)が動作しています。 私はここで配管時の奇妙なタイムスタンプのようなインクルードがmkdirにあるのはなぜですか?

/oldset/ 

内の既存のサブディレクトリの別のセットと同じ名前を持つ

/newset/ 

にディレクトリの新しいセットを作成したいサブディレクトリがある/ 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

「alias ls」の出力は何ですか?そして、 '\ ls ...'の出力をパイプしてみてください。 –

+0

'ls'コマンドのカラーコントロールコードがおそらく使用されているようですね。 – Galik

答えて

1

私には、あなたがls -F --colorにエイリアスを実行しているようです。私は今は箱ではないが、それは正しい設定だと思う。私もxargsを使用している理由はわかりません。私はコマンド置換を使用したいと思いますが、Andrewが指摘したように、バックスラッシュはエイリアスを無効にしたり無視したりします。最初の場所には、

mkdir $(\ls /oldset) 
+0

それは、ありがとう。 'ls -F --color'のエイリアスを使って、うまく動作します。 – matt

2

Don't use lsがあります。

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

またはこのmkdir代わりのひとつに複数のコールを必要とするが、ループを使用する:アレイを使用します。

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

と 'mkdir" $ {names [@}#/ oldset /} "'不正な置換エラーが発生しました – matt

+1

'[']をタイプしようとしたときにshiftキーを押したままです。 – chepner

関連する問題