web-dev-qa-db-ja.com

Unixでファイルのみを移動する方法

mvコマンドを使用して、Linuxの1つのフォルダーから別のフォルダーに(ディレクトリではなく)プレーンファイルのみを移動するにはどうすればよいですか?

私が試してみました mv * ~/、しかしそれはディレクトリを含むすべてをコピーしました。

20
shorty

あなたが試すことができます

find . -maxdepth 1 -type f -exec mv {} destination_path \;
31
Mereghost

私は「すべてにハンマーを使う」ちょっとした人なので、他の人が外部プログラムを使用するものにボーンシェルプログラムを使用しています...

for file in * .* 
do
  test -f "$file" && mv "$file" "$HOME"/
done

できるだけ少ないタイピングで物事を成し遂げることを好む人もいますが、私はかなりタイピストで、このようなものを脳に組み込んでいるので、正確に調べる代わりにこれを行うのはそれほど苦痛ではありません。検索して実行するための引数など。

YMMV、しかし...

4
chris

@Mereghostは非常に近いです。すべてのファイル(隠しファイルを含む)を移動しますが、ディレクトリは移動しません。

find . -maxdepth 1 -type f -name '*' -exec mv -n {} /destination_path \;

. findの後で、現在のディレクトリが移動するファイルのソースであると想定しています。そうでない場合は、コマンドを次のように修正できます。

find /source_path -maxdepth 1 -type f -name '*' -exec mv -n {} /dest_path \;

通常のファイルのみを移動し、隠しファイルは移動しない場合:

find . -maxdepth 1 -type f -name '[!.]*' -exec mv -n {} /dest_path \;

隠しファイルのみを移動し、通常のファイルは移動しない場合:

find . -maxdepth 1 -type f -name '.*' -exec mv -n {} /dest_path \;
3
teancum144

名前にドットが含まれているフォルダがない場合は、すべてを簡単に移動できます。

mv 〜/ destinationfolder

(私の仮定は、すべてのファイルが何かであるということです(私の場合、すべてが通常です))。

しかし、他の回答に感謝-非常に役に立ちます。どうも

0
Shawor