特定の数のファイルを別のディレクトリに移動またはコピーする方法を知りたいです。
例:ディレクトリに880個のファイルがあり、150個のファイルをtoディレクトリから移動またはコピーするA
場合は、150〜300個のファイルをtoディレクトリから移動またはコピーします。A
B
A
C
私はこのコマンドを試しました
$ find . -maxdepth 1 -type f | head -150 | xargs cp -t "$destdir"
しかし、これは880個のファイルをディレクトリにコピーすることです。B
ベストアンサー1
150ファイルの可能な解決策mv
:
mv `find ./ -maxdepth 1 -type f | head -n 150` "$destdir"
mv
コピーに置き換えますcp
。
テストケースは次のとおりです。
mkdir d1 d2
cd d1
touch a b c d e f g h i j k l m n o p
cd ../
mv `find ./d1 -type f | head -n 5` ./d2/
結果:
ls d1 d2
d1:
b c d e g h i k m n o
d2:
a f j l p
編集する:
あなたのコメントに答える簡単なスクリプトは次のとおりです。
#!/bin/sh
# NOTE: This will ONLY WORK WITH mv.
# It will NOT work with cp.
#
# How many files to move
COUNT=150
# The dir with all the files
DIR_MASTER="/path/to/dir/with/files"
# Slave dir list - no spaces in the path or directories!!!
DIR_SLAVES="/path/to/dirB /path/to/dirC /path/to/dirD"
for d in $DIR_SLAVES
do
echo "Moving ${COUNT} to ${d}..."
mv `find ${DIR_MASTER} -maxdepth 1 -type f | head -n ${COUNT}` "${d}"
done
exit
注:サンプルスクリプトはテストされていませんが、機能します。