GNU/Linux >> Linux の 問題 >  >> Linux

すべてのファイルを現在のディレクトリから上位ディレクトリに移動する方法は?

あなたが探しているコマンドは

mv * .[^.]* ..

または (詳細は以下を参照):

(shopt -s dotglob; mv -- * ..)

説明:mv コマンドは、ファイルとディレクトリを移動します。 mv の最後の引数 がターゲットです (この場合、ツリーの「1 つ上の」ディレクトリ .. )。その前の引数は、ソース ファイルとディレクトリです。アスタリスク (* ) は、ドットで始まらないすべてのファイルに一致するワイルドカードです。ドットで始まるファイル (ドットファイル) は「非表示」です。それらはパターン .[^.]* を使用して照合されます (以下の編集を参照)。

mv の詳細については、リンクしたマンページを参照してください .

.[^.]* の理由 .* の代わりに ?

Chris Johnsen が正しく指摘しているように:パターン .* . にも一致します および .. .それらを移動したくない (そして移動できない) ため、ドットで始まる任意のファイル名に一致するパターンを使用することをお勧めします これら 2 つを除く .パターン .[^.]* まさにそれを行います:任意のファイル名 (1) で始まり、ドット (2) の後に not 以外の文字が続くものと一致します ドット (3) の後に 0 個以上の任意の文字が続きます。

Paggas が指摘するように、パターン .??* も追加する必要があります。 2 つのドットで始まるファイルを一致させるため。 find を使用した代替ソリューションについては、彼の回答を参照してください .

Arjan's answer は shopt に言及しています ドットファイルに関するこれらすべての問題を回避するために。しかし、ダッシュで始まるファイルにはまだ問題があります。そして、3 つのコマンドが必要です。それでも、私はアイデアが好きです。次のように使用することを提案します:

(shopt -s dotglob; mv -- * ..)

これは shopt を実行します サブシェルで (したがって、shopt への 2 回目の呼び出しはありません) 必須)、-- を使用 ダッシュで始まるファイルが mv の引数として解釈されないように .


簡単な答え:使用

find . -mindepth 1 -maxdepth 1 -exec mv -t.. -- {} +

長い答え:

コマンド

mv * .* ..

.* 以降は機能しません . に一致 と .. .しかし、コマンド

mv * .[^.]* ..

.[^.]* であるため、これも機能しません。 一致しません。例:..filename !代わりに、私がしていることは

mv * .[^.] .??* ..

. 以外のすべてに一致します そして .. . * . で始まらないものすべてに一致します 、 .[^.] .. を除く、ドットで始まる 2 文字のファイル名すべてに一致します 、および .??* は、ドットで始まる 3 文字以上のすべてのファイル名に一致します。

さらに良いことに、使用できます

find . -mindepth 1 -maxdepth 1 -exec mv -t.. -- {} +

mv * .[^.] .??* .. の見苦しい glob ハックを回避します !


完全を期すために、shopt を使用して Bash シェルに隠しファイルを含めるように指示することもできます。 :

shopt -s dotglob
mv -- * ..
shopt -u dotglob

Linux
  1. すべてのファイル(非表示を含む)をあるディレクトリから別のディレクトリに移動するにはどうすればよいですか?

  2. 数千を含むフォルダから100ファイルを移動する方法は?

  3. すべてのJavaソースファイルをそれぞれのパッケージディレクトリに移動するにはどうすればよいですか?

  1. すべてのファイルをあるディレクトリから別のディレクトリに移動 (および上書き) する方法は?

  2. ディレクトリ内のすべてのファイルで単語のすべての出現を変更する方法

  3. ディレクトリ内のすべてのゼロバイトファイルを見つける方法

  1. Linuxですべてのディレクトリのファイルを再帰的に検索する方法

  2. Wgetを使用してWebディレクトリからファイルを再帰的にダウンロードするにはどうすればよいですか?

  3. ディレクトリ内のすべてのファイル (ファイルのクラス) へのシンボリック リンクを作成する方法は?