Simple, Slowly

ブログを引っ越ししました。http://48.jp

正規表現で指定されたファイルを抽出する方法

例えば、以下のようなファイルがあったとします。

.
|-- 1.php
|-- 2.php
|-- apple.jpg
|-- fuga.php
|-- hoge.php
|-- lib
|   |-- 01.php
|   |-- 02.php
|   `-- abc.php
`-- orange.jpg

数字のファイルのみ抽出

カレントディレクトリのみを検索する場合は、 lsとegrepの組み合わせ。
下位のディレクトリまで検索する場合は、findを使えばうまくいきます。


カレントディレクトリのみを検索する

$ ls | egrep '[0-9]'

# result
1.php
2.php

findで下位のディレクトリも検索の対象にする

$ find . -name '[0-9]*'

#result
./2.php
./1.php
./lib/01.php
./lib/02.php


ls -Rでもできるんですけどね。

$ ls -R | egrep '[0-9]'

# result
1.php
2.php
01.php
02.php

画像ファイルのみ抽出

$ ls | egrep '.jpg'

# result
apple.jpg
orange.jpg

ディレクトリのみ抽出

$ ls | egrep '/$'

# result
lib/

数字のファイルのみ消す

抽出したファイルをまとめて消すことも簡単にできます。

$ ls | egrep '[0-9]' | xargs rm


下位ディレクトリのファイルも対象の場合は、findでできます。

find . -name '[0-9]*' | xargs rm