Linux(Ubuntu)では、どのようにしてすべてのファイルとディレクトリを親ディレクトリに移動しますか?
見つけます。 -maxdepth 1 -exec mv {} .. \;
これは隠しファイルも移動します。
メッセージが表示されます。
mv: `。 'を動かすことはできません../。へ:デバイスまたはリソースがビジーです
それが.
(現在のディレクトリ)を移動しようとしたとき、それは害を及ぼしません。
私はこの話題にも慣れていないので、ここに来ました。どういうわけか、上記は私にとってはうまくいきませんでした。すべてのファイルをディレクトリからその親ディレクトリに移動するために私がしたことは、次のとおりです。
cd to/the/dir
mv * ../
これをシェルに入力します。
mv *.* ..
これにより、すべてのファイルが1レベル上に移動します。
文字*
はワイルドカードです。 *.deb
はすべての.debファイルを移動し、Zeitgeist.*
はZeitgeist.aviとZeitgeist.srtを1つ上のフォルダに移動します。もちろん、..
は親ディレクトリを示します。
フォルダなどを含むすべてを移動するには、*
の代わりに*.*
を使用するだけです。
それ以上に単純なことはできません。
mv * ../
隠しファイルも移動するには
mv /path/subfolder/{.,}* /path/
mv
はファイルを移動するためのコマンドです。*
はすべてのファイルとフォルダを意味し、../
は親ディレクトリへのパスです。
Bashでは、shopt -s dotglobを使用して*すべてのファイルに一致させ、単純に次のように移動することができます。
shopt -s dotglob; mv * ..
次のように設定を変更するまで、シェルにとって設定は永続的であるため、これは最善の解決策ではありません。
shopt -u dotglob
しかし、知っておくといいと思います。
find . -maxdepth 2 -type f -exec mv {} .. \;
上記のバリエーションを使用して、すべてのファイルをサブフォルダから親フォルダに移動しました。
私は年ごとにデータをフォルダーに入れていましたが、メタデータを使用してそれらをすべて同じフォルダーに入れることで管理が容易になりました。
例えば。
/data/2001/file_1
/data/2002/file_2
/data/2003/file_3
エラーが発生せず、毎回動作するメソッドです。
ls -1A . | while read -r file
do
mv "./${file}" ..
done
find -type f|while read line; do mv $line ${line##*/}; done
すべての隠しファイルがドットで始まり、その後に文字または数字が続いていると仮定すると、次のようになります。
mv * .[A-Za-z0-9]* ..
.[A-Za-z0-9]*
の部分は、.
や..
を一緒に移動しようとしないようにすることです。これは失敗する可能性があります。
ディレクトリを変更する必要はありません。パスの最後に*を含めるだけです。
mv /my/folder/child/* /my/folder/
上記は隠されていないファイルのみを移動します。隠しファイルのみを移動するには、。*を使用します。
mv /my/folder/child/.* /my/folder/
上記の2つを1つのコマンドにまとめることができます。
mv /my/folder/child/{.,}* /my/folder/
* で隠しファイルも含めてすべてのファイルを親ディレクトリに移動する方法
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
すべてのファイルとフォルダは、絶対フォルダ(親ディレクトリ)に移動します。