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

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

.. も移動しようとしないので、これが最もエレガントだと思います。 :

mv /source/path/{.[!.],}* /destination/path

UNIX と Linux の回答で、これに関する包括的なソリューション セットを見つけることができます。How do you move all files (include hidden) from one directory to another? Bash、zsh、ksh93、標準 (POSIX) sh などでのソリューションを示します。

これら 2 つのコマンドを一緒に使用できます:

mv /path/subfolder/* /path/   # your current approach
mv /path/subfolder/.* /path/  # this one for hidden files

またはすべて一緒に (pfnuesel に感謝):

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

これは次のように展開されます:

mv /path/subfolder/* /path/subfolder/.* /path/

(例:echo a{.,}b a.b ab に展開されます )

これにより、いくつかの警告が表示されることに注意してください:

mv: cannot move ‘/path/subfolder/.’ to /path/.’: Device or resource busy
mv: cannot remove /path/subfolder/..’: Is a directory

それらを無視してください:これは /path/subfolder/{.,}* が原因で発生します /path/subfolder/. にも展開されます および /path/subfolder/.. 、ディレクトリと親ディレクトリです (フォルダー内で「.」と「..」は何を意味するかを参照してください)。

単にコピーしたい場合は、単に使用できます:

cp -r /path/subfolder/. /path/
#                     ^
#                     note the dot!

/path/subfolder/. 以降、通常のファイルと隠しファイルの両方のすべてのファイルがコピーされます。 「このディレクトリのすべて」に展開されます (出典:隠しファイルと隠しディレクトリとその内容を含めるために cp でコピーする方法は?)


<ブロック引用>

これにより、期待どおりにすべてのファイルが親ディレクトリに移動されますが、隠しファイルは移動されません。その方法は?

dotglob をオンにすることができます :

shopt -s dotglob               # This would cause mv below to match hidden files
mv /path/subfolder/* /path/

dotglob をオフにするには 、次のように言う必要があります:

shopt -u dotglob

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

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

  3. symlink ディレクトリ内のファイルを含む、ディレクトリ内のすべてのファイルを再帰的に一覧表示する

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

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

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

  1. 現在のディレクトリ内のすべてのファイルを chown/chmod する方法は?

  2. 一部を除くディレクトリ内のすべてのファイルを削除する方法は?

  3. mv コマンドですべてのファイルとフォルダーを移動する方法