2016-01-09 26 views
7

私は約70万の.jpgファイルをあるディレクトリから別のUbuntuサーバに移動しようとしています。 /は/ usr/binに:引数リストが長すぎることなく多くのファイルを移動するにはどうしたらいいですか?

xargs mv * -t /var/www/html/ 

echo (*.jpg|*.png|*.bmp) | xargs mv -t /var/www/html/ 

echo (*.jpg) | xargs mv -t /var/www/html/ 

find . -name "*.jpg" -print0 | xargs mv * ../ 

、それらはすべてが私に同じエラーを与えた:私は、次のことを試してみましたxargs:引数リストが長すぎます

どうすればよいですか?私を助けてください。ありがとう:)

+0

関連:[ "引数リストが長すぎる" い 制限は、組み込みコマンドをシェルに適用?](https://stackoverflow.com/questions/47443380/does-argument-list-too -long-restriction-apply-to-shell-builtins) – codeforester

答えて

13

findを使用する場合は、-exec属性を使用することをお勧めします。結果はfind . -name "*.jpg" -exec mv {} /home/new/location \;になるはずです。私がチェックすることをお勧めしますしかし

ものとexec一部を置き換えるfindコマンド戻ります、:-exec ls -lrt {} \;あなたがしようとしている可能性が

+0

これは実際に私のために完璧に働いてくれてありがとう! :D:Dありがとう!!! –

+0

@AwahHammadよろしくお願いします! –

2

:また

for f in *.jpg do; 
    mv -tv $f /var/www/html/ 
done 
for f in *.png do; 
    mv -tv $f /var/www/html/ 
done 
for f in *.bmp do; 
    mv -tv $f /var/www/html/ 
done 

は、あなたが慎重にxargs(1)をお読みください。私は強く

find . -name "*.jpg" -print0 | xargs -n 1000 -I '{}' mv '{}' ../ 

は、最後にあなた

のために働くrename(1)についての詳細を学ぶべきであると思われます。それはおそらく仕事のために十分です。

+0

ラズベリーパイで私はこのコマンドを実行しましたが、セミコロンが 'do'キーワードの前に移動したときにコマンドが次のように表示されるようになったときに動作し始めました:"for f。* .jpg; mv -f $ f/var/www/html/jpgs /; done " –

1

試してみてください。

find /path/to/old-directory -type f | xargs -i mv "{}" /path/to/new-directory