• ベストアンサー

grepでファイル名を取得したい。

いま以下の構成になっています。 カレントディレクトリの(ディレクトリを除く)ファイル名を取得し,list.txtに出力する作業をやってます。 そういうオプションがあれば良いのですがなかなか見つかりません。知恵をお貸しください。 list -F |& grep (???) > list.txt -Fでディレクトリの最後に/がつくので,(???)の部分でそれらのファイルを除く,とする方針…?と思ったのですが,うまいやり方が見つかりません。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • qaaq
  • ベストアンサー率36% (146/404)
回答No.3

#2 のqaaqです。 grepで処理したいのですね。 ls -F1 | grep -v '/$' で如何でしょう。 ls のオプションが -F だけでは、1行に複数のファイル名が含まれてしまうので、 オプション"1"をつけて1行1ファイルになるようにします。 grepでは、”行末の/”を対象外"-v"にすればいいのです。

x_crimson
質問者

お礼

素早くて的確な回答ありがとうございます。 方針は大体あっていたんですね。ですがまだ慣れません。勉強です。 ありがとうございました。

その他の回答 (2)

  • qaaq
  • ベストアンサー率36% (146/404)
回答No.2

OSが不明なので確定かもしれませんが、 find コマンドの -type オプションで出来ませんか? FreeBSDだと、 % find . -type f で出来ます。 後は、 -maxdepth オプションで対称にするディレクトリ階層を制限すればいいと思います。

  • yasuya
  • ベストアンサー率16% (35/216)
回答No.1

ファイル名って拡張子付いてますよね? ディレクトリ名に「.」が付いてなければ >ls -l *.* | awk '{print $9}' > list.txt で良いと思います。

x_crimson
質問者

補足

早速の回答をありがとうございます。参考になります! grepを使った良い方法はありますでしょうか。 それと補足ですが,一行目は消し忘れですので気にしないでください。

関連するQ&A