我试图将一个大目录复制到S3,并希望分离大于5GB的文件。如果到目前为止有以下情况:
cd /source/directory/
dsize=$(du -sh)
bigfile=$(find -size +5G -exec du -sh {} \;)
smallfiles=$(find -size -5G -exec du -sh {} \;)
if [ "$smallfiles" != "$bigfiles" ]
then
for sfile in $smallfiles
do
cp -ravf $sfile /destination/for/smallfiles/
done
else
echo "Larger files are $bigfiles"
for file in $bigfiles do
cp -ravf $file /destination/for/bigfiles/
done
fi当我运行它时,它不是分离大文件和复制小文件/目录中的所有文件。
我哪里错了?
发布于 2014-11-26 10:21:56
谢谢你的支持,我做了下面的排序方法,我确实尝试了如果条件,但每次失败。所以我确实喜欢这样:
sd=$(du -d1 | awk '$1<5000000''{print $2}')
for d in $sd
do
cp -rvaf $d /destination/for/smallfiles/
done
echo "Small directories has been copied to smallfiles/"
bd=$(du -d1 | awk '$1>5000000''{print $2}')
echo "Copying Bigfiles.............."
for d in $bd
do
cp -rvaf $d /destination/for/bigfiles/
done如果你对此有更好的解决办法,欢迎你.
发布于 2014-11-24 10:39:19
从您的命令中删除-exec du -sh {} \;,因为它也在添加文件大小。使用-type f只选择以下文件:
bigfile=$(find . -type f -size +5G)发布于 2014-11-24 12:38:05
这应该能行
cd /source/directory/
find . -size -5G | xargs -i{} cp -ravf {} /destination/for/smallfiles/
find . -size +5G | xargs -i{} cp -ravf {} /destination/for/bigfiles/https://stackoverflow.com/questions/27102601
复制相似问题