Linuxでファイルとディレクトリを親フォルダーに移動するにはどうすればよいですか?


回答:


66
見つける 。-maxdepth 1 -exec mv {} .. \;

これにより、隠しファイルも移動します。

次のメッセージが表示されます。

mv: `。 'を移動できません to `../。 ':デバイスまたはリソースがビジー

移動しようとすると.(現在のディレクトリ)、それが害を及ぼすことはありません。


1
また、すべてのファイルをすべてのサブディレクトリから現在のディレクトリの親に移動します。-maxdepth 1確かに使用します。
チャフィンク

1
mv:移動できません./scripts' to ../scripts ':ディレクトリが空ではありません

1
親ディレクトリと現在のディレクトリに、scriptsというディレクトリが必要です。移動する前に、この名前を変更する必要があります。
チャフィンク

1
それは機能しましたが、1つの非常に重要な情報を残しました-これをサブディレクトリから実行する必要があります。また、サブディレクトリ自体は削除されないため、1つのディレクトリをバックアップし、サブディレクトリでrmdirを実行する必要があります。
クラフター

89

私もこのテーマに慣れていないので、ここに来ました。なんらかの理由で、上記の方法ではうまくいきませんでした。すべてのファイルをディレクトリからその親ディレクトリに移動するために私がしたことは:

cd to/the/dir
mv * ../

12
ただし、これは隠しファイルを移動しません
Wavesailor

1ライナー:(cd ${ANDROID_NDK_HOME}/android-ndk-r14b/ && mv * ../)
Dawid Drozd

10

これをシェルに入力します。

mv *.* ..

これにより、すべてのファイルが1レベル上に移動します。

文字*はワイルドカードです。したがって*.deb、すべての.debファイルZeitgeist.*を移動し、Zeitgeist.aviとZeitgeist.srtを1つ上のフォルダーに移動します..。もちろん、親ディレクトリを示します。

フォルダなどを含むすべてを移動する*には、代わりに*.*


3
これは、dirsでは機能しませんでした!または隠しファイル

少なくとも私にとっては、dirsで動作します。
-maaartinus

5
ディレクトリを含めたく*ない*.*
クリスS

その素晴らしいドキュメンタリー
-BlackBurn027

6

以下よりも簡単なことはできません。

mv * ../

隠しファイルも移動するには:

mv /path/subfolder/{.,}* /path/ 

mvはファイルを移動するコマンドであり、*すべてのファイルとフォルダーを意味../し、親ディレクトリへのパスです。


2

bashでは、shopt -s dotglob を使用 して、すべてのファイルを*一致させ、次の方法で簡単に移動できます。

shopt -s dotglob; mv * ..

シェルの設定は変更するまで永続的であるため、これは最適なソリューションではありません

shopt -u dotglob

でも知っておくといいと思います。


4
サブシェルで呼び出します:(shopt -s dotglob && mv * ..)。そうすれば、オプションはそのサブシェルに対してのみローカルになります。
マーティンUeding

良い答え-それは簡単で、隠しファイルを含み、「。」のコピーに関するエラーを引き起こしません。および '..'
ダニエルハワード

1

エラーが発生せず、毎回機能するメソッド:

ls -1A . | while read -r file                                                    
do                                                                                  
    mv "./${file}" ..                                                            
done

1
find . -maxdepth 2 -type f -exec mv {} .. \;

上記のバリエーションを使用して、すべてのファイルをサブフォルダーから親に移動しました。

年ごとにフォルダ内のデータを取得していましたが、メタデータを使用することで、それらをすべて同じフォルダに入れて管理しやすくすることができました。

例えば。

/data/2001/file_1
/data/2002/file_2
/data/2003/file_3

0

すべての隠しファイルがドットで始まり、その後に文字または数字(これが必要です)が続くと仮定すると、使用できます

mv * .[A-Za-z0-9]* ..

.[A-Za-z0-9]*一部はあなたが移動しようとしていないことを確認することです.か、..失敗した、一緒に。


0

Linuxですべてのファイルとフォルダーを親ディレクトリに移動するのは簡単です。

そのフォルダーに移動し、次のコマンドを使用します。

mv * /the full path

たとえば、ファイルとフォルダーが次の場合:

/home/abcuser/test/1.txt 
                   2.txt
                   3.jpg
                   4.php
                   1folder
                   2folder

cdでそのフォルダーに移動します。

cd /home/abcuser/test
mv * /home/abcuser

すべてのファイルとフォルダーがabcuserフォルダー(親ディレクトリ)に移動します。


2
@Garethに感謝します。ほぼ同じでした。Abhishek、無関係なリンクを投稿しないでください、その意味はどこですか?また、フォーマットを確認してください。さらに、/the full pathLinuxでは機能しません/the\ full\ path。スペースでエスケープする必要があります。
slhck

0

ディレクトリを変更する必要はありません。パスの最後に*を含めるだけです。

mv /my/folder/child/* /my/folder/

上記は非隠しファイルのみを移動します。隠しファイルのみを移動するには、。*を使用します

mv /my/folder/child/.* /my/folder/

上記の2つを1つのコマンドに結合できます。

mv /my/folder/child/{.,}* /my/folder/

参照: 隠しファイルを含むすべてのファイルを親ディレクトリに移動する方法*


0
find -type f|while read line; do mv $line ${line##*/}; done

答えてくれてありがとう。これは単純なシナリオで動作するかもしれませんが、配管findにはwhile read、使用する悪い方法でfind、より良い答えが既に掲載されています。
スコット

-1

サブディレクトリに切り替えて、ファイルのコピーまたは移動のために次のコマンドを実行します。

例:aは親ディレクトリで、bはサブディレクトリです。すべてのファイルをbからa(サブディレクトリから親ディレクトリ)に移動/コピーします。

cd b
cp * ..
mv * ..

スーパーユーザーへようこそ!これは別の回答を複製し、新しいコンテンツを追加しません。実際に何か貢献できるものがない限り、回答を投稿しないでください。
DavidPostill
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.