【Linux】あるディレクトリにテキストファイルが大量にあります。

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/10/10 14:28:54
  • 終了:--

回答(2件)

id:flame_ox No.1

flame_ox回答回数8ベストアンサー獲得回数02004/10/10 14:44:17

ポイント10pt

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

$ 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コマンドを発行して移動します。

id:bar77

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

説明不足ですいません。

2004/10/10 14:46:07
id:noboru No.2

noboru回答回数94ベストアンサー獲得回数02004/10/10 14:48:07

ポイント40pt

URLはダミーです。

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

cd /from/dir

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

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

id:bar77

ありがとうございます!

うまくいきそうです。

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

2004/10/10 14:56:50

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません