下のように各フォルダ内にreadme.txtファイルだけを特定のフォルダ内に
コピーしたいのですが、ファイル名が同じなので、元のフォルダ階層のように
フォルダを作成して、そのファイルだけがコピーされるようなfindを使った
器用な方法はできるのでしょうか?

私は、次の段階で躓いて折ります。
find ./ -name ".forward"


execを使い方法は、
find img/ -type d -exec chmod 604 {} \;
のようなことは使ったことはありますが、通過したフォルダを作成して、ファイルをコピーする
ような方法はどのように記述したらよいか、わかりません。

A
+-- a1.txt
| a2.txt
| readme.txt
B
+-- b1.txt
| b2.txt
| readme.txt
C
+-- c1.txt
c2.txt
readme.txt

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

A 回答 (1件)

例:下記のようなディレクトリ構成で各ディレクトリ(A,B,C)配下にあるreadme.txtをディレクトリsavedirにディレクトリを作成しつつコピーする場合。



ディレクトリ構成例
+A-+-- a1.txt
|  +-- a2.txt
|  +-- readme.txt
|
+B-+-- b1.txt
|  +-- b2.txt
|  +-- readme.txt
|
+C-+-- c1.txt
|  +-- c2.txt
|  +-- readme.txt
|
+savedir ←コピー先


ディレクトリ(A,B,C,savedir)があるディレクトリ配下に移動後以下のコマンドを実行。

# find A B C -name "readme.txt" -print | cpio -pdv savedir
    • good
    • 0

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

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

Qディレクトリの中身(ファイル)をコピーするコマンドは?(fedora)

こんにちは。
fedora core5を使っていてCPコマンドで困りました。
cp -R /home/aaa /home/bbb
と入力して、aaaというディレクトリの中身のファイルを全てbbbというディレクトリへコピーしようとしたのですが、これではaaaというディレクトリごとbbbへコピーされてしまい、/home/bbb/aaa みたいになってしまいます。

指定したディレクトリの中のファイルを全て別ディレクトリへコピーするときはどのように指定すればよいのでしょうか?

Aベストアンサー

カレントディレクトリが/homeとします。
cp ./aaa/* ./bbb/
とすればいいと思います。ドットファイルまでコピーしてくれるかどうかは自信がありません。manを読んで下さい。

Q~以外を削除する場合(rmコマンド)

linuxのコマンドで
~以外のファイル、ディレクトリを全て削除したい時は
どのような記述をすれば良いのでしょうか?
シェルスクリプトではなくrmコマンド1つで削除したのいですが…

例: tar以外のファイル・ディレクトリを
   すべて削除したい場合など

どなたかご存知の方がいらっしゃったら
教えてください。よろしくお願い致します。

Aベストアンサー

rm コマンドのみという訳にはいきませんが基本的なコマンドを組み合わせると実現可能と思います。

「名前が tar で終わるもの以外のファイル・ディレクトリを削除する」場合だと

ls | grep -v -E 'tar$' | xargs rm -r

となります。

ファイルの一覧を取得し ( ls )
'tar'で終わるもの以外を抽出し ( grep )
その結果を rm -r の引数に指定して実行 ( xargs )

という流れです。

ファイルを削除するような操作については失敗するとダメージが大きいので、事前にテストして動作を確認すると良いとおもいます。また rm -r -i としてそれぞれのファイルについて、削除の問い合わせをするのも有効です。

Q特定のフォルダ内のある種類のファイルをすべてコピーし格納する方法

WINDOWSマシン使用。
あるフォルダ(AAA)の中に、複数のフォルダやファイルを含み、またそのフォルダは、
は、下位のフォルダやファイルを含むという関係が続きます。階層は4くらい。
この中の各所にあるフォルダにはwordのファイルやその他のファイルを含んで
います。
このwordのファイルだけをすべて選択しコピーして、別のフォルダ(BETU)へ
入れたい。
簡単に行なう方法、あるいはツールなどあれば紹介をお願いします。

Aベストアンサー

はじめまして。

コマンドプロンプトで
for /f "tokens=*" %i in ('dir /b /s AAA\*.doc') do copy "%i" "BETU"
を実行すれば4階層以上深くても可能です。

※"%i" "BETU"と"でくくるのは、ディレクトリ名に空白がある場合エラーとなるのを防ぐためです。

AAAもBETUもフルパスで記述すればコマンド実行ディレクトリは何処でも構いません。

Q特定の拡張子だけディレクトリを維持したままコピー

UNIXコマンドでcp -r とすればディレクトリの形を維持したまま再帰的にコピーできますよね。ここで特定のファイル名や拡張子(例えば.mp3)だけコピーしたいという場合、どのようなコマンドを使えばいいですか?

Aベストアンサー

コマンドプロンプトで
xcopy コピー元の親フォルダ\*.mp3 コピー先の親フォルダ\ /d /s /e /y

例えば
xcopy "C:\Documents and Settings\自分のユーザー名\My Documents\My Music\*.mp3" d:\マイミュージック\mp3\ /d /s /e /y
とか。

Qsedの置換文字に変数を使用したいのですが・・・

あるファイルの特定の文字を変換し、上書きをする処理を行いたいのですが、sedの置換文字に変数が渡せなくて困っています。

例:
X="a"
Y="b"
echo test.txt | sed 's/${X}/${Y/g}' >test.txt

sedでは置換文字に${X}といった変数を使用することはできないのでしょうか?

Aベストアンサー

' ・・・' で囲まれた中の$はそのままドルマークです。変数展開をするなら、'・・・'で囲んではいけません。

何も囲まないか、"・・・"で囲むかです。

Qxcopyで特定のファイルのみをコピーする方法

xcopyもしくはcopyコマンドを使用し、ディレクトリ内の特定のファイル(複数)を
コピーするにはどのようにしたら良いのでしょうか?

特定のファイルの数が多すぎるため、一行ずつコマンドを書くのは手間が掛るため、
何か良い方法があれば教えて頂きたいと思います。

excludeオプションを使用すれば特定のファイルを除外できるようですが、
反対の意味の特定のファイルのみをコピーしたいです。

例)
c:\test内は以下のファイルがあります。
・aaa.txt
・bbb.txt
・ccc.txt
・ddd.txt
・eee.txt

これらのファイルの内、bbb.txtとddd.txtとeee.txtをコピーしたいです。

Aベストアンサー

よくこんな感じでやってました。
バッチ用コマンドですがバッチファイルを作らずコマンドラインで実行させます。
( コピー先フォルダを C:\distdir\ とします。)

コマンドラインでこれ
for %a in ( bbb.txt ddd.txt eee.txt ) do xcopy c:\test\%a c:\distdir
を実行させると、

カッコ ( ) の中からファイル名を1個拾っては %a に代入し do 以下を実行します、
つまり以下の3コマンドに展開し1個ずつ実行します。
xcopy c:\test\bbb.txt c:\distdir
xcopy c:\test\ddd.txt c:\distdir
xcopy c:\test\eee.txt c:\distdir

尚、この場合は拡張子がいずれも txt なので、以下のように書くと文字数を若干減らせます。
1コマンドラインの文字数は限りがあるので、ファイル数が多くて他の部分を縮めたい時に有用です。
for %a in ( bbb ddd eee ) do xcopy c:\test\%a.txt c:\distdir

ところで、文法を正確に記憶してなくて恐縮ですが、
Windows 配下のコマンドプロンプトが備えるコマンドでは、
予め対象のファイル名リストをテキストファイルで作っておき、
そこからファイル名を1個ずつ拾ってコマンド実行させる事が可能です。

よくこんな感じでやってました。
バッチ用コマンドですがバッチファイルを作らずコマンドラインで実行させます。
( コピー先フォルダを C:\distdir\ とします。)

コマンドラインでこれ
for %a in ( bbb.txt ddd.txt eee.txt ) do xcopy c:\test\%a c:\distdir
を実行させると、

カッコ ( ) の中からファイル名を1個拾っては %a に代入し do 以下を実行します、
つまり以下の3コマンドに展開し1個ずつ実行します。
xcopy c:\test\bbb.txt c:\distdir
xcopy c:\test\ddd.txt c:\distdir
xcopy c:\test\eee.txt ...続きを読む

Qfindでフォルダだけを検索

find / -name "apache*"
これを、フォルダだけヒットするような文にするとどうなりますか?

Aベストアンサー

がると申します。

find / -name "apache*" -type d
でいかがでしょうか?

Q"cp -a"と"cp -r"の違い

"cp -a"と"cp -r"の違い

-aは「できるだけ属性や構造を保持する」
-rは「ディレクトリを再帰的にコピーする」
ですが、「属性や構造を保持する」「再帰的にコピーする」の意味がよくわかりません。

また、コピーしたいディレクトリから下のディレクトリやファイルまで含めてそのままコピーするにはどちらが適しているのでしょうか?

Aベストアンサー

> コピーしたいディレクトリから下のディレクトリやファイルまで含めてそのままコピーする

「下のディレクトリやファイルまで含めて」という条件だけを指定するのが-rオプションです。
-rオプション無しだと、cpはファイルしかコピーできませんが、-rオプションを付けると
「コピーしようとしている物がディレクトリだったら、その中に入っている物をコピーする」
「そうやってコピーしようとしている物がまたディレクトリだったら、さらにその中に入っている物をコピーする」

と、順次ディレクトリを辿ってコピーしていきます。
この「ディレクトリを順次辿る」ことを「再帰的」と称しています。

一方、-aオプションの「属性」は、ファイルのタイプスタンプなどのことです。
-a 無しだと、ファイル先のファイルの更新時刻はコピーを実行した時刻になりますが、-a を付けると、更新時刻などもコピー元と同じになります。
「構造」とは、ディレクトリやシンボリックリンクなどの、特殊なファイルのことです。そのため、-aオプションでも-rオプションと同じく、再帰的なコピーは行います

-rオプションでは、タイムスタンプなどの情報が消えてしまいますし、
シンボリックリンクも「ファイルとしてコピー」されてしまいますので、「そのままコピーする」のなら、 -a オプションの方がいいでしょう。

> コピーしたいディレクトリから下のディレクトリやファイルまで含めてそのままコピーする

「下のディレクトリやファイルまで含めて」という条件だけを指定するのが-rオプションです。
-rオプション無しだと、cpはファイルしかコピーできませんが、-rオプションを付けると
「コピーしようとしている物がディレクトリだったら、その中に入っている物をコピーする」
「そうやってコピーしようとしている物がまたディレクトリだったら、さらにその中に入っている物をコピーする」

と、順次ディレクトリを辿...続きを読む

Qapt-get install ****** でinstallしたものをuninstallするには?

御世話になります。
vncserverだけをinstallするつもりが
誤って
apt-get install vncとうってしまいました。
これをuninstallしたいのですが
どのようにすればよろしいでしょうか?

教えて下さい。

Aベストアンサー

# apt-get remove パッケージ名
では、設定ファイルは削除されずに残ります。

完全に削除するときは、
# apt-get --purge remove パッケージ名
です。

Qgrepで検索文字列が完全一致した行だけ取り出す方法

grepの文字列検索で検索文字列が単語として、完全一致した行だけ取り出す方法はないでしょうか?

通常は
grep hoge hoge.txt

と打つと、hogeが含まれる行が出力されますが、今回は含まれる行ではなくて完全に文字列が一致した行だけ取り出したいのです。

例えばhoge.txtの中に
cc ghoge
kkl hogem
jjll hoge
という3行があったとしたら最後の行でhogeという文字が空白で区切られた行だけ取り出したいのです。

何かよい方法があれば教えてください

Aベストアンサー

-w オプションじゃだめですか?

参考URL:http://www.linux.or.jp/JM/html/GNU_grep/man1/grep.1.html


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報