質問: 1 do( cd /.. ) ``` ※この"file1"の部分を変数かなにかでフォルダの数だけ実行したい。 ### 試したこと 各フォルダごとにif構文で中身の有無の確認まではコーディングできましたがその後中身のファイルの名前がちがうので、個別にcdコマンドを使わねばなりません。 そこで、フォルダが空でなければ中身をcd /.. するという表現をどうコード化すればよいでしょうか。 もしかして、拡張子が同じならそこから探す方法もあるのでしょうか。 よろしくお願い致します。 ### 補足情報(言語/FW/ツール等のバージョンなど) より詳細な情報 以下問題ファイルのツリーです。 File |-File01-file01-file01.pdf |-File02-file02-file02.pdf |-File03-file03-file03.pdf ...以下同様のフォルダが100個ほど。 を File |-File01-file01 |-File02-file02 |-File03-file03 |-file01.pdf |-file02.pdf |-file03.pdf したいと考えています。 問題は大文字のフォルダはアプリの設定で作成されたもので、解凍したいファイルはもともとフォルダで小分けされていたのです。そこで、もうフォルダは必要ないので一番上層のFileフォルダにpdfのみを移動したいということです。 このような感じでいかがでしょうか。 初心者ゆえ、多くの概念がまだ理解不足なのに加えて説明能力不足も相まって非常に難解な文章となってしまいました。お手数おかけしますがよろしくお願い致します。
回答: 役に立たないかもしれませんが、POSIXシェル芸での解決方法を書いておきます。もしBash on windowsやpowershellをご利用ならば使えるかもしれません。 ``` mv $( find . | grep "*.pdf" ) ./ ``` 簡単に説明をすると、`find .`で現在のフォルダから下にあるすべてのファイルを表示、`grep "*.pdf"`でその中からファイル名が***.pdf**のものだけを取り出し、最後にmvでそれらを全部現在のフォルダに移動してます。