web-dev-qa-db-ja.com

フォルダコンテンツを1レベル上に移動する

解凍されたディレクトリがありますが、フォルダー内にあります。コンテンツを1レベル上に移動するにはどうすればよいですか? SSH経由でCentOSにアクセスしています。

143
whatshakin

「myfolder」というフォルダーがあり、ファイル階層の1つ上のレベル(配置したいポイント)の場合、コマンドは次のようになります。

mv myfolder/* .

たとえば、データが/home/myuser/myfolder次に/home/myuser/コマンドを実行します。

212
Rudu

上記のRuduの回答とコメントから、明確にするために。

すべてのコンテンツを移動する必要がある場合は、で始まるファイルを含めます。 (.htaccess、.gitなど)のように、コマンドに*と。*の両方を含める必要があります。そのようです:

 mv subfolder/* subfolder/.* .

これにより、サブフォルダーの内容が現在のフォルダーに移動します。最後の「。」の前のスペースに注意してください。

29
Richard

これは、次の方法で可能です。

  • rsyncの使用:

    rsync -vua --delete-after foo/ .
    
  • cpおよびrmdirの使用:

    cp -vaR foo/. . && rmdir foo/
    
  • mvを使用する(dotglobオプションを有効にして):

    shopt -s dotglob # Includes filenames beginning with a dot.
    mv -- foo/* .    # Where foo/ is the folder consisting the files.
    shopt -u dotglob # Disables previously enabled dotglob option.
    

    ここで、foo/は、コンテンツを1レベル上に移動するフォルダーです。

    参照:help shoptおよびman bash

  • mvの使用(推奨 ここ ):

    mv foo/* foo/.[^.]* . && rmdir foo/
    

    注:foo/..bar..というファイルが欠落します。

    注:POSIXシェルの場合、[!.]が必要です。

16
kenorb

mvコマンドを発行するだけ

mv (directory)/* .

ディレクトリを削除したい場合は追加します

rm -rf (directory)

(ディレクトリ)の親ディレクトリにいると仮定します

(ディレクトリ)内にいる場合

mv * ../
7
Ranjith Siji

短いコマンドがあります

cp */* .

これにより、もちろんレベルアップですべてのサブフォルダーのコンテンツがコピーされます。移動を使用できます

mv */* .

または新しい距離を割り当てる

cp */* /destination 
1
Mohammed Omer

共有サーバーを使用している場合は、次のようなものを使用する必要があります

ファイルを移動するには

mv -v ~/public_html/public_html/* ~/public_html/

ファイルをコピーするには

cp -a ~/public_html/public_html/* ~/public_html/

0
Ricardo Havoc