たくさんのファイルの中から、特定の文字を含まないファイルを検索したいのですが、良い方法はないでしょうか?

#正規表現を使ったgrepなんかでもできるものですか?

このQ&Aに関連する最新のQ&A

A 回答 (4件)

処理系にもよると思いますが、grepは検索した結果、見つかったかどうかで異なる戻り値を返しますから、これを調べたらよいと思います。


シェルスクリプトなら、
for file in *
do
grep -q "HOGE" $file
if [ $? -eq 1 ]
then
echo $file
fi
done
    • good
    • 0

GNU の grep を導入すれば、-L というオプションが使えます。



参考URL:http://www.linux.or.jp/JM/html/GNU_grep/man1/gre …
    • good
    • 0

grepがおのぞみであれば、



grep -c 条件 ファイル名

で、検索をするとファイル中の条件に一致した
行数(Countのcですね)を返しますので、

・特定の文字を含む条件で検索
・結果が0のものが、含んでいないファイル

では駄目ですか?

-------------------------------------
(たとえばこんな感じ)
# grep -c abc *txt
test1.txt:0
test2.txt:1
    • good
    • 0

特定の文字をファイル名に含まないということなのかファイルの内容に含まないということなのか、


OSやシェルは何かということで話は変わってくると思いますけど、とりあえず、
例えばUNIXのcshでファイル名に 'x' を含まないファイルを見つけるということなら
 find . \! -name '*x*' -print
で見つけられます。(詳細はman findで調べて下さい。)

この回答への補足

すみません、土下座 m(_ _)m。
ファイル名でなく、ファイルの内容に特定の文字を含まないファイルの検索方法でした。
説明のしかたがあいまいで申し訳ありません。

補足日時:2001/08/16 15:29
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q「古い圧縮ファイル」の確認方法

Dドライブのディスクのクリーンアップをしたいのですが、実行できるものが、「古い圧縮ファイル」の削除しかありません。

「古い圧縮ファイル」がどのプログラムかを確認する方法を教えてください。

また、圧縮されたファイルの名前は青くなるらしいのですが、見つかりません。どうしてでしょうか
圧縮ファイルは1G弱あります。

Aベストアンサー

http://www.atmarkit.co.jp/fwin2k/win2ktips/106cleanup/106cleanup.html

初期設定では、50日以上アクセスの無かったファイルに対して、圧縮が行われます。
当然、圧縮してからでないと、ファイル名は青色にはなりませんので、ディスク・クリーンアップでの候補段階では、黒色のままです。


尚、設定によっては青色表示にならない場合も有りますけど。

http://121ware.com/qasearch/1007/app/nec.jsp?005084

Q(秀丸)正規表現で、特定文字列含む<~>範囲を選択

お世話になります。
(秀丸の)正規表現について教えてください。

たとえば、テキストファイルに、1行、
”<abc>文字列1です><abc>文字列2です><abc>文字列3です>(ここで改行)”
という文字列が存在しています。

それを対象として、
(秀丸の)正規表現を利用し、
”<abc>文字列2です>”だけをマッチさせたいのですが、
試しに、(秀丸の)正規表現で、
<abc.*文字列2.*?>  ←(なお、実際の記号は半角(.*?等)で、それぞれ入力しています・・・)
で検索実行したところ、
”<abc>文字列1です><abc>文字列2です>”
として、
前の方に、マッチして欲しくない、
”<abc>文字列1です>”
までがマッチしてしまっている状況です。

そこでご質問なのですが、
上記におきまして、(秀丸の)正規表現を利用して、
”<abc>文字列2です>”だけをマッチさせるには、
どのようにすれば、よろしかったでしょうか?
(ちなみに秀丸は、2013年12月10日(火)現在の
 最新バージョンVer8.32を利用しています)

以上になります。
宜しくお願いいたします。

お世話になります。
(秀丸の)正規表現について教えてください。

たとえば、テキストファイルに、1行、
”<abc>文字列1です><abc>文字列2です><abc>文字列3です>(ここで改行)”
という文字列が存在しています。

それを対象として、
(秀丸の)正規表現を利用し、
”<abc>文字列2です>”だけをマッチさせたいのですが、
試しに、(秀丸の)正規表現で、
<abc.*文字列2.*?>  ←(なお、実際の記号は半角(.*?等)で、それぞれ入力しています・・・)
で検索実行したところ、
”<abc>文字列1です><abc>...続きを読む

Aベストアンサー

表現としては
<abc[^<]*文字列2[^<]*>
こんな感じでしょうか
他の書き方もできると思います

Qファイルの圧縮方法

AVIやMPGの画像ファイルを圧縮する方法を教えてください。900mb位のファイルをCD-Rに落とし込める700mbまで圧縮したいんですが。できれば、zipやlzhなどの後で解凍しなくてはいけないような圧縮方法ではなく、多少画像が荒くなってもファイルを単純に縮小させるような方法を教えていただけると有り難いのですが。。
因みに、TMPGEncを試してみたんですが、どうもうまくいかなくて。。ファイルサイズが元のファイルより逆に大きくなってしまうんです。
すいませんが、宜しくお願いします。

Aベストアンサー

画像圧縮?くす(^^
エンコはTMPGEncやaviutlでやるのがふつーです。
ええ 絶対! 
aviutl
http://ruriruri.zone.ne.jp/aviutl/

zipとかで圧縮しても意味ありません サイズ的に。

で、TMPGEncで元より大きくなるのは問題は
コーデック、画像サイズ、 音声ファイルなど
理由はいっぱいあります。対処は類似質問みて↓
http://oshiete1.goo.ne.jp/kotaeru.php3?q=625581

だから圧縮というか再エンコードが面倒なら
ファイルをテキトーな部分でカットする方向性はどお?
CD-R 2枚に保存 450 450 くらいでカット。
対処は類似質問みて↓
http://oshiete1.goo.ne.jp/kotaeru.php3?q=610331
ではでは!

追伸
カンタンにならrmファイルに変更かなあ
でも画質は落ちますよ
ネット配信 ストリーミング形式でどぞ!
RealplusG2とかRealEncoderで変換
でもaviでもないしmpegでもないですけど、どお?

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=610331

画像圧縮?くす(^^
エンコはTMPGEncやaviutlでやるのがふつーです。
ええ 絶対! 
aviutl
http://ruriruri.zone.ne.jp/aviutl/

zipとかで圧縮しても意味ありません サイズ的に。

で、TMPGEncで元より大きくなるのは問題は
コーデック、画像サイズ、 音声ファイルなど
理由はいっぱいあります。対処は類似質問みて↓
http://oshiete1.goo.ne.jp/kotaeru.php3?q=625581

だから圧縮というか再エンコードが面倒なら
ファイルをテキトーな部分でカットする方向性はどお?
CD-R 2枚に保存 450...続きを読む

Qgrepにマッチした正規表現の文字列を取得したい

grepにマッチした正規表現の文字列を取得し、マッチした文字列を
一覧で取得したいのですが、方法がわかりません。

※例
grep [0-9][0-9][0-9][0-9][0-9] 検索ファイル名 > 出力ファイル名

不明点あればお知らせください。
よろしくお願いします。

Aベストアンサー

UnixやLinuxなら、まずは man grep してみること。
GNU版のgrepなら --help オプションでもかなり詳細な説明が見れます。

GNU grepのマニュアルより
> -o, --only-matching
> Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.

GNU grepのヘルプより
> -o, --only-matching 行の中で PATTERN に一致した部分のみ表示する

こういうことですか?
ただ、この方法はその行で最初に見付かったものだけ出力されるので、1行に複数マッチする場合には使えませんが。

POSIXのgrepには-oは無いようなので、sedかなんかで抜き出すことになります

Qファイルの圧縮方法が解りません

窓の杜やベクター等に置かれている、フリーの圧縮、解凍ソフトをダウンロードしていますが、テキストファイルや、画像ファイルの圧縮方法が解りません。何方か教えて頂けませんか?

Aベストアンサー

ソフトの開発者のサイトで質問することをお奨めします。

ソフトごとに操作方法が異なりますので、使用しているソフト名すらない状態では誰も必要とする回答を出せません。

窓の杜やベクターでは開発者のサイトへのリンクがありますから、そこからアクセスできますよ。

Q正規表現で、00で始まる画像をgrep検索したいのですが、どう書けばよ

正規表現で、00で始まる画像をgrep検索したいのですが、どう書けばよいでしょうか?

ネットで調べてやってみたところ、下記のような感じになったのですが、もう少しスマートな書き方をするには、どうすればよいでしょうか?
00+.+.+(?=jpg)

これだと、例えば「004-main.jpg」だけではなく、「400-thumbs.jpg」なども検索されてしまいます。

■探したい対象の中身の例(明示的な規則性はありません)
900.jpg
<img src="images/400_300_1.jpg" alt="正規表現分からない" width="400" height="300" border="0">400_300_2.jpg<a href="#" target="_blank"></a> 002_main.jpg <br />005.jpg<br /> 006_thumb.jpg

■また、行の先頭にマッチするという「^」について知りたいのですが、行頭というのは何を持って 行頭と見做されるのでしょうか? 改行の後の文字=行頭ということなのでしょうか?

■例えば、下記のような中から、005-main.jpgを検索しようとする場合、必ず<br />の後に005-main.jpgがくる、みたいな法則性がないと、いわゆる単語単位での切り取りみたいなのは出来ないのでしょうか?
<br />005-main.jpg<br />

正規表現で、00で始まる画像をgrep検索したいのですが、どう書けばよいでしょうか?

ネットで調べてやってみたところ、下記のような感じになったのですが、もう少しスマートな書き方をするには、どうすればよいでしょうか?
00+.+.+(?=jpg)

これだと、例えば「004-main.jpg」だけではなく、「400-thumbs.jpg」なども検索されてしまいます。

■探したい対象の中身の例(明示的な規則性はありません)
900.jpg
<img src="images/400_300_1.jpg" alt="正規表現分からない" width="400" height="300" border="0">400_3...続きを読む

Aベストアンサー

grepもいろいろ種類があって、使える正規表現が違うものがある(正規表現が使えない紛い物まで存在する!)ので、一番基本的な正規表現だけで書くとこんな感じでしょうか。

[>/"] *00[^.]*\.[jJ][pP][gG]

この式の弱点は、行頭にあるものは見つけられないことです。また、HTMLタグの中に書かれていないものもダメです。

で、行頭ですが、文頭を除いて改行の次で合っています。改行しかない行(空行)は、行頭であると同時に行末でもあるという扱いになり、^$という式で表せます。

余談ながら、grepの場合は検索だけなので問題にならないのですが、sedやawk,perlなどのテキスト処理言語やエディタなどの置換できるツールで、行頭や行末を加工した場合は話がややこしくなります。なぜなら新たな行頭や行末が発生してしまうため、これをどう扱うのかという話になるからです。正しくは、行頭や行末に対する置換は一度しか行われないことですが、これを正しく実装できていないエディタもあるので、注意が必要です(特に行頭)。

Qpsdファイルの圧縮方法

psdファイルの圧縮方法を教えてください。(基本的質問で恐縮ですが)
win98です。なお、ファイルは9MB程度ですが、圧縮したものを解凍する際、鮮明度が落ちずに元通りの画像で開けますでしょうか?

Aベストアンサー

●大きなサイズのファイルを分割して送付

+Lhaca 1.20 デラックス版での分割方法
http://park8.wakwak.com/~app/Lhaca/

 1. インストールは、ダウンロードした Lhaca120.exe を実行する。
 2. デスクトップに作成された +Lhaca のショートカットに、
   対象のファイルをALTキーを押しながらドロップする。
 3. 保存場所を聞いてくるので、望みの場所を指定する。
   (圧縮形式は、相手が解凍できる形式を選ぶ。)
 4. 分割されたファイル群と結合用のバッチファイルが作成される。
   (デフォルトでは 1.2MB を上限として分割される。)
   (このサイズは +Lhaca で変更できる。)
 5. (4)のファイル全てを、容量を超えないようにメールに添付して送信
   する。
   (添付ファイル総数を本文に明記すること。)
 6. 受け取った側は、全ての添付ファイルを一箇所に集めて、バッチファ
   イルを実行する。
   (操作手順は、本文に明記すること。)
 7. 分割されたファイルが結合されるので、結合された圧縮ファイルを解
   凍する。
 8. 9MBのファイルが解凍されるので、作業する。


これでどうかな!?

※他の圧縮ソフトも分割機能が備わっていると思うが・・・

●大きなサイズのファイルを分割して送付

+Lhaca 1.20 デラックス版での分割方法
http://park8.wakwak.com/~app/Lhaca/

 1. インストールは、ダウンロードした Lhaca120.exe を実行する。
 2. デスクトップに作成された +Lhaca のショートカットに、
   対象のファイルをALTキーを押しながらドロップする。
 3. 保存場所を聞いてくるので、望みの場所を指定する。
   (圧縮形式は、相手が解凍できる形式を選ぶ。)
 4. 分割されたファイル群と結合用のバッチファイルが作成される。
   (...続きを読む

Q改行を含む正規表現について

すみません。どこのカテゴリで質問してよいのか判らなかったのですが
正規表現で改行を含むパターンはどの様に検索/置換すればよろしいのでしょうか?

例えば
はじめ



おわり
はじめ

おわり
はじめ



おわり

の様に はじめからおわりまでをの複数の行数を含む パターンを検索するにはどう表記すればよいのでしょか
ちなみに秀丸では はじめ(\n.*)*おわり では検索できませんでした。
ご存知の方 手ほどきの程よろしくお願いします。

Aベストアンサー

> sed&awk・・・
>  知り合いのLINUX使いが 良いから覚えろといいますが、Awkとか覚えるのがめんどくさそうで・・・
windowsで簡単に使えますか?
> おすすめサイトなどあったら教えてください

まあ使いこなそうと思えば結構奥が深いですけど、ちょっとした置換をするくらいなら
そんなに覚えることはないですよ。
でまあGUIみたいな飾りはありませんが

gawk
http://www.kt.rim.or.jp/~kbk/gawk-3.1
sed
http://www.kt.rim.or.jp/~kbk/sed

あとはvectorとか
Download: Windows95/98/Me用ソフト > ユーティリティ > テキストファイル用 > AWK
http://www.vector.co.jp/vpack/filearea/win95/util/text/awk/

入門になりそうなページを探してみましたが意外にないものですね。
一子相伝で伝えられるものなんでしょうか(笑)

Awkプログラミング入門講座-はじめに
http://homepage2.nifty.com/mozu/koza/awk_koza/awk_koza_00.html
UNIXコマンドの使い方
http://www.iis.u-tokyo.ac.jp/~susaki/command/c_sed.html
IBM 共通テーマ: 実例でわかるsed: 第1回 - Japan
http://IBM 共通テーマ: 実例でわかるsed: 第2回 - Japan
http://www-06.ibm.com/jp/developerworks/linux/010216/j_l-sed2.html
http:www-06.ibm.com/jp/developerworks/linux/010202/j_l-sed1.html
IBM 共通テーマ: 実例でわかるsed: 第3回 - Japan
http://www-06.ibm.com/jp/developerworks/linux/010223/j_l-sed3.html

参考までに「はじめ」と「おわり」に挟まれた部分だけを切り出したい場合

sed -n -e "/はじめ/,/おわり/p"

こんだけです。

> sed&awk・・・
>  知り合いのLINUX使いが 良いから覚えろといいますが、Awkとか覚えるのがめんどくさそうで・・・
windowsで簡単に使えますか?
> おすすめサイトなどあったら教えてください

まあ使いこなそうと思えば結構奥が深いですけど、ちょっとした置換をするくらいなら
そんなに覚えることはないですよ。
でまあGUIみたいな飾りはありませんが

gawk
http://www.kt.rim.or.jp/~kbk/gawk-3.1
sed
http://www.kt.rim.or.jp/~kbk/sed

あとはvectorとか
Download: Windows95/98/Me用ソフ...続きを読む

QNTFS圧縮したファイルを全部まとめて戻す方法

NTFS圧縮したファイルをプロパティからひとつひとつチェックをはずして戻すのではなく、圧縮されたファイルを全部まとめて元に戻す方法ってあるのでしょうか?

Aベストアンサー

圧縮を解除したいファイルを全て選択した状態で
→プロパティ→NTFS圧縮のチェックを外す→OK

それらのファイルがフォルダに入っているなら
フォルダのプロパティからやってもいい。
(サブフォルダにも適用するか尋ねられるからOKにする)

QC#での文字抜き出し正規表現について

C#にて、ファイルパスの中間部分だけを取り出す方法を考えておりますが、苦慮しております。

「C:\xxx\yyy\zzz.exe」の「yyy」だけ取り出す正規表現を教えてください。

Aベストアンサー

正規表現でなくてすみません。
string filepass = "C:\\xxx\\yyy\\zzz.exe";
string[] dir = filepass.Split(new char[]{'\'});

結果
dir[0] = "C:"
dir[1] = "xxx"
dir[2] = "yyy"
dir[3] = "zzz.exe"

こういう手法でしたら、"C:\xxx\aaa\yyy\zzz.exe"でも"c:\xxx\yyy\aaa\zzz.exe"あっても、配列の長さから計算してyyyを取得できますしいいかと思いましたけど。
dir[0]がドライブパス。
dir[dir.length]が一番最後と分かりますし。

c:\xxx\yyy\zzz.exeという構造が固定なら、後方から正規表現で\yyy\の範囲を当てればyyyはとれますが、ディレクトリの状況によってしまうので、zzz.exeの一つ前のディレクトリを知りたい時以外は使えないかと。

あとは(?<!:)\\とやって、ドライブ直下のディレクトリを出さないとかでxxx\yyyのyyyは取れます。

最近C#は使ってなかったので配列とかに間違いあるかもしれません(テストしてないので…)

参考URL:http://msdn.microsoft.com/ja-jp/library/b873y76a(v=vs.80).aspx

正規表現でなくてすみません。
string filepass = "C:\\xxx\\yyy\\zzz.exe";
string[] dir = filepass.Split(new char[]{'\'});

結果
dir[0] = "C:"
dir[1] = "xxx"
dir[2] = "yyy"
dir[3] = "zzz.exe"

こういう手法でしたら、"C:\xxx\aaa\yyy\zzz.exe"でも"c:\xxx\yyy\aaa\zzz.exe"あっても、配列の長さから計算してyyyを取得できますしいいかと思いましたけど。
dir[0]がドライブパス。
dir[dir.length]が一番最後と分かりますし。

c:\xxx\yyy\zzz.exeという構造が固定なら、後方から正規表現で\yyy\の範囲を...続きを読む


人気Q&Aランキング

おすすめ情報