2017-01-19 5 views
1

拡張子のない特定の拡張子(.com)を持つすべてのファイルの名前をカレントディレクトリから抽出して配列に格納したいとします。Ubuntu端末のすべてのファイル名(拡張子なし)を配列に入れます。

これは私が試したものです:

test=$((*.com) | sed 's/.com//g') 

私はエラー

のzshを取得:アクセス許可が拒否されました:1butene.com

1butene.comは、私が持っているファイルです。

ありがとうございました!

答えて

0

現在、一連の名前を保存していて、sedにパイプしています。

1butene.com xxxx | sed 's/.com//g' 

1butene.comコマンドは、それ自体ではないので、明らかに何か許可されていません:グロブが展開されている場合、これは、フォーム上のコマンドになります。あなたがしなければならない何


1)データを格納し、
2)クリーニングを実行することです。

これは良いニュースです! Shell parameter expansion on arraysを実行できます!

あなたは配列にデータを保存することができますこの方法:その後、

names=(*.com) 

そして、ちょうどextracting its nameによって、それらのすべてで交換を行い、拡張子なし:あなたがしたい場合

printf "%s\n" "${names[@]%.*}" 

change values of bash array elements without loopに、

new_array=("${names[@]%.*}") 

サンプル:何とか動作しているようです

$ touch a{1..3}.{sql,com} 
$ com_names=(*com) 
$ printf "%s\n" "${com_names[@]}" 
a1.com 
a2.com 
a3.com 
$ printf "%s\n" "${com_names[@]%.*}" 
a1 
a2 
a3 
b=("${com_names[@]%.*}")   # assign to a new array 
$ printf "%s\n" "${b[@]}" 
a1 
a2 
a3 
+0

OK、。しかし、これらの名前を配列にどのように格納するのですか?私がtest =(\ *。com)してからtest = $ {"%\ n" "$ {names [@]%。\ *}"} $ testが空の場合 – user7408924

+0

@ user7408924私の説明の最後の部分を参照してください_Sample_セクションの前に、 'var =(" $ {... [@]%。*} ")'を追加します。また、コマンド自体であるため、変数に 'test'という名前を使用しないでください! – fedorqui

+0

最新の編集内容は表示されません。作品!どうも! – user7408924

関連する問題