0

私はこれらの朝の1つを過ごしており、何も計画されていません。一度に1,000個ずつファイルをターゲットディレクトリに移動する必要があります

私はそのように私のファイルをループしたかった

for i in `find . -name '*XML'`
   for((b=0; b<1000; b++))
   do
   mv $i targetdirect/
   done
done

しかし、予期しないトークン「done:」エラーの近くで「-bash:構文エラー」が発生します。

何が足りないの?

4

2 に答える 2

3

2番目のforループは構文エラーです。また、二重引用符で囲む必要があります"$i"

一度に1000個のファイルを移動するとはどういう意味ですか?おそらくこのようなものですか?

find . -name '*.XML' -print0 | xargs -r0 -n 1000 mv -t targetdirect

-print0および対応するものは、任意のファイル名を処理するためのxargs -0GNU拡張子です。これが機能するのは、Unixのファイル名ではヌル文字が無効な文字であるためです。したがって、ファイル名間の区切り文字として使用しても安全です。定期的に名前が付けられたファイル(ファイル名に引用符や改行などがない)の場合、これは厄介に思えるかもしれませんが、十分に文書化された実践とFAQです。

于 2012-10-01T17:09:19.540 に答える
0

最初のforループには対応するものがありませんdo (2つありますdoneが、1つだけdoです)。

于 2012-10-01T17:09:06.767 に答える