お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2015-05-06 11:55:52

hotohoto
メンバ
登録日: 2009-07-04

ファイルをひとつ上の階層に移動しようと思いますが困ることが有ります

あるフォルダ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 が怖いので。うまく言ったら消せば良いので

オフライン

 

#2 2015-05-06 13:13:52

nobuta
新しいメンバ
登録日: 2009-07-17

Re: ファイルをひとつ上の階層に移動しようと思いますが困ることが有ります

ファイル C を ディレクトリ (フォルダではなくディレクトリといいます) B の名前で A に置くと
ファイルとディレクトリ名がかぶっておけません。ですので新たにディレクトリを作成してそこに
全部置くようにします。

cd A
mkdir new
for dir in *
do
  cp $dir/C new/$dir
done

オフライン

 

#3 2015-05-06 15:04:39

hotohoto
メンバ
登録日: 2009-07-04

Re: ファイルをひとつ上の階層に移動しようと思いますが困ることが有ります

nobuta による投稿:

ファイル C を ディレクトリ (フォルダではなくディレクトリといいます) B の名前で A に置くと
ファイルとディレクトリ名がかぶっておけません。ですので新たにディレクトリを作成してそこに
全部置くようにします。

cd A
mkdir new
for dir in *
do
  cp $dir/C new/$dir
done

nobutaさん、さっそくどうもありがとう。
ところでいただいたものはなんとなくわ真里ました。
初歩的な質問ですが
これはbatファイルに書いて実行するものなのでしょうか?
コマンドラインで次々に書いていけば動くものでしょうか?

オフライン

 

#4 2015-05-07 02:44:10

のんき
メンバ
登録日: 2007-03-04

Re: ファイルをひとつ上の階層に移動しようと思いますが困ることが有ります

----------------------------
* スクリプト作成と実行手順 *
===============

(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

オフライン

 

#5 2015-05-07 08:00:10

hotohoto
メンバ
登録日: 2009-07-04

Re: ファイルをひとつ上の階層に移動しようと思いますが困ることが有ります

のんきさん、ありがとうございます。

cp できました! シェルスクリプトなわけですね。
丁寧に書いてもらったので非常にわかりやすいです。
これは自分だけでなく初心者の人にも
「なるほどこういうことを知りたかった」というものの一つだと思いました。

ところで対象のデータはiPhoneからの写真データでしたが、
下記に置いて操作しています。
/home/me/Pictures/iPhoneより20150505/V2/PhotoStreamsData/1718497188/106APPLE/IMG_6146.JPG/5003.JPG

なお教えていただいたとおりですと日付が最新になってしまいますが、後はわかります。
cpコマンドのオプションを見て改造してみます。

感謝します

hotohoto

オフライン

 

Board footer

Powered by FluxBB