人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【Linux】あるディレクトリにテキストファイルが大量にあります。
ある単語が含まれるファイルのみを別のディレクトリに移動するスクリプトを教えてください。

●質問者: bar77
●カテゴリ:コンピュータ
✍キーワード:Linux スクリプト テキスト ディレクトリ ファイル
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● flame_ox
●10ポイント

http://www.linux.or.jp/JM/html/GNU_findutils/man1/find.1.html

Manpage of FIND

こんな感じでどうでしょう。

$ ls -l

total 0

-rw-r--r-- 1 flame flame 0 Oct 10 14:37 abcd

-rw-r--r-- 1 flame flame 0 Oct 10 14:37 bcde

-rw-r--r-- 1 flame flame 0 Oct 10 14:37 cdef

-rw-r--r-- 1 flame flame 0 Oct 10 14:37 defg

-rw-r--r-- 1 flame flame 0 Oct 10 14:37 efgh

flame@harumi ~/from

$ find . -type f -name ”*cd*” -exec mv {} ../to ¥;

flame@harumi ~/from

$ ls -al

total 0

drwxr-xr-x+ 2 flame flame 0 Oct 10 14:39 .

drwxrwxrwx+ 4 flame flame 0 Oct 10 14:37 ..

-rw-r--r-- 1 flame flame 0 Oct 10 14:37 defg

-rw-r--r-- 1 flame なし 0 Oct 10 14:37 efgh

flame@harumi ~/from

$ ls -al ../to

total 0

drwxr-xr-x+ 2 flame flame 0 Oct 10 14:39 .

drwxrwxrwx+ 4 flame flame 0 Oct 10 14:37 ..

-rw-r--r-- 1 flame flame 0 Oct 10 14:37 abcd

-rw-r--r-- 1 flame flame 0 Oct 10 14:37 bcde

-rw-r--r-- 1 flame flame 0 Oct 10 14:37 cdef

ポイントは

find . -type f -name ”*cd*” -exec mv {} ../to ¥;

です。まず、findコマンドでファイル名に「cd」を含むファイルをリストし、そのファイル一つ一つに対してmvコマンドを発行して移動します。

◎質問者からの返答

ファイル名ではなく、ファイルの中身を見て移動したいのです。

説明不足ですいません。


2 ● noboru
●40ポイント

http://www.geocities.jp/noboru2000/

NOBORUなページ

URLはダミーです。

こんな感じでよろしいのではないでしょうか。

cd /from/dir

mv `grep -l ’your search word’ *` /to/dir

バッククオートで grep -l の出力を引数にするということです。

◎質問者からの返答

ありがとうございます!

うまくいきそうです。

(ファイル数が多いのでxargsを使いました)

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ