2017-02-19 9 views
-1

私は作業中の課題がありますが、問題が始まっています。割り当てテキストの中には、以下のものがあります。これは私を正しい方向に向けるのに役立ちます。ディレクトリからすべてのファイルを取得して配列に入れます

私の主な問題は、ファイルのリストを配列に取得することです。私がそれをすることができれば、残りは楽になるはずです。私は引数として渡される配列にファイルをプッシュすることができますが、各ファイルを配列に分割してディレクトリからすべてのファイルを取得する方法はわかりません。

ご協力いただければ幸いです!

+1

なぜすべてのファイルをディレクトリから取得する必要がありますか?割り当てはそれをするとは言いません。 – melpomene

+0

おそらく、私は質問が何を求めているのかという間違った考えを持っているかもしれません。彼らは私がそれを解釈する方法は、彼が彼のディレクトリに入れて、スクリプトを実行してファイルをタイプに整理することです。これらのタイプは、通常のファイル、シンボリックリンク、ディレクトリ、またはその他のものです。私はこのスクリプトで他のコマンドを実行する必要がありますが、あまり離れたくはありません。 このタスクを解釈する別の方法はありますか?多分私が行方不明の何か? –

+0

あなたが言ったことのどれも、あなたの質問で引用した課題の一部ではありません。 – melpomene

答えて

2

おかげベンジャミンWさんのコメント: ちょうどフレッドさんのコメントに、この(感謝を使用し、files=(*)

を使用するか、あなたは隠しファイルを含める場合や空のフォルダとのトラブルに巻き込まれるんしたくありません):

shopt -s nullglob dotglob 
files=(*) 
+1

私のDVではありませんが、これは 'files =(*)'と言う厄介な方法です –

+0

あなたは正しいです、私は遅れています... – mfnalex

+1

答えを更新するだけでいいですか? :) –

0
#!/bin/bash 

shopt -s nullglob 
arr=(/home/*) 

for ((i=0; i<${#arr[@]}; i++)); do 
    echo "${arr[$i]}" 
done 
+1

'shopt -s dotglob'を指定しないと、ドットで始まる名前のファイルは考慮されません(特定の場合に必要な場合とそうでない場合があります)。 – Fred

+0

はい...余分な説明のために+1。質問には特定のケースは言及していません...すべてのドットファイルを削除しました! –

0

このスクリプトをチェックし、それは、任意のパラメータ((($# == 0)))与えられ、そうでない場合、私はされていた場合tはset -- "$PWD"を使用して、最初の位置パラメータを現在のディレクトリ.に設定します。

その後、(これはfor f in "[email protected]"の略です)は処理のためのすべてのパラメータをループします。

#!/bin/bash 

(($# == 0)) && set -- "$PWD" 
for f; do 
    # Do something with f 
done 
+0

パラメータが指定されていない場合は '.'を使用し、カレントディレクトリ内のすべての(隠されていない)ファイルは使用しません。 – melpomene

+0

@melpomene私はそれを「すべてのもの」と解釈しました。「...それは現在の作業ディレクトリでなければならないと思いますか? –

+0

はい、具体的には、ファイルだけでなく、「ファイルシステムオブジェクト」(ディレクトリやその他のものを含む)を指しているためです。 – melpomene

関連する問題