
Ubuntu日本語フォーラム

ログインしていません。
あるフォルダAの下に沢山(千程)のフォルダB達が有ります。
そのフォルダB達の下にそれぞれ1枚の写真ファイルCが有ります。
写真ファイルCは全て同じ名前です。
さて問題ですが
ここでCを上のフォルダAに移動したいのですがどうすればよいでしょうか?
具体的には
「Cの名前をBに変えて、それをAの中に置きたい」ということです。
このとき「一つ一つのファイルCの名前をBに変えて、上のフォルダに移動する」
ということをGUIの手作業同然ではできますが、これを千回行いたくありません。
そこでコマンドラインで
cp A/*/* A //注1
などするとファイル名が全て同じなので
フォルダAには「たったひとつのファイルCがあるだけ」となってしまう。
(おそらく・・・)
そこで、Bフォルダの名前でCファイルをBファイルにしたい。
このような場合のコマンドラインの使い方を教えてもらえますか。
注1:ここでcp をしないのはいきなり mv が怖いので。うまく言ったら消せば良いので
オフライン
ファイル C を ディレクトリ (フォルダではなくディレクトリといいます) B の名前で A に置くと
ファイルとディレクトリ名がかぶっておけません。ですので新たにディレクトリを作成してそこに
全部置くようにします。
cd A
mkdir new
for dir in *
do
cp $dir/C new/$dir
done
オフライン
nobuta による投稿:
ファイル C を ディレクトリ (フォルダではなくディレクトリといいます) B の名前で A に置くと
ファイルとディレクトリ名がかぶっておけません。ですので新たにディレクトリを作成してそこに
全部置くようにします。
cd A
mkdir new
for dir in *
do
cp $dir/C new/$dir
done
nobutaさん、さっそくどうもありがとう。
ところでいただいたものはなんとなくわ真里ました。
初歩的な質問ですが
これはbatファイルに書いて実行するものなのでしょうか?
コマンドラインで次々に書いていけば動くものでしょうか?
オフライン
----------------------------
* スクリプト作成と実行手順 *
===============
(1)Desktop画面から(Ctrl+Alt+T)にて端末を起動する。
(2)ファイル移動スクリプト(File_ido.sh)の作成
端末画面内コマンド入力位置からキー入力、入力の最後はEnterで終わる。
gedit File_ido.sh
(3)gedit画面内で下記入力
----次の行のテキストから入力--------
#!/bin/sh
cd A
mkdir new
for dir in *
do
cp $dir/C new/$dir
done
----上記の行までテキストから入力------
(注1)上記テキストをコピー&ペーストでも良いです。
(注2) フォルダAがホームディレクトリ(home/ubuntu)以下に存在しない場合は
スクリプト6行目を、sudo cp $dir/C new/$dirに書き換えてください。
(4)geditメニュー ファイル(F)+保存(S)
(5)geditメニュー ファイル(F)+終了(Q)
(6)スクリプトファイルの実行権をFile_iso.shに付与する
chmod +x File_ido.sh
(7)File_iso.shの実行
./File_ido.sh
(8)実行結果の確認
newフォルダ下にファイル一覧が表示されたら完了
ls -l new
(9)端末の終了
exit
オフライン
のんきさん、ありがとうございます。
cp できました! シェルスクリプトなわけですね。
丁寧に書いてもらったので非常にわかりやすいです。
これは自分だけでなく初心者の人にも
「なるほどこういうことを知りたかった」というものの一つだと思いました。
ところで対象のデータはiPhoneからの写真データでしたが、
下記に置いて操作しています。
/home/me/Pictures/iPhoneより20150505/V2/PhotoStreamsData/1718497188/106APPLE/IMG_6146.JPG/5003.JPG
なお教えていただいたとおりですと日付が最新になってしまいますが、後はわかります。
cpコマンドのオプションを見て改造してみます。
感謝します
hotohoto
オフライン