我有一个外部驱动器,上面有超过1TB的项目文件。我需要重新格式化这个驱动器,以便我可以重新组织它,但是在我这样做之前我需要转移所有内容。问题是我在Mac上并且驱动器被格式化为NTFS所以我所能做的就是复制它。我试图简单地只是复制并粘贴在Finder中,但驱动器似乎在大约15分钟的复制后锁定。所以我决定编写一个bash脚本来一次迭代所有1000多个文件。这似乎适用于没有空格但跳过它的文件。
到目前为止,这是我一直在攻击的内容..我在bash方面不是很先进,所以对你如何处理这些空间有任何建议。
quota=800
size=`du -sg /Users/work/Desktop/TEMP`
files="/Volumes/Lacie/EXR_files/*"
for file in $files
do
if [[ ${size%%$'\t'*} -lt $quota ]];
then
echo still under quota;
cp -v $file /Users/work/Desktop/TEMP_EXR;
du -sg /Users/work/Desktop/TEMP_EXR;
else
echo over quota;
fi
done
(我正在检查目录大小,因为在将所有临时副本全部复制到一个重新格式化的驱动器之前,我必须将此临时副本拆分到几个不同的位置。)
答案 0 :(得分:5)
cp -v "$file" /Users/work/Desktop/TEMP_EXR
答案 1 :(得分:0)
您可以将所有文件名放在一个数组中,然后迭代它。
quota=800
size=`du -sg /Users/work/Desktop/TEMP`
files=( /Volumes/Lacie/EXR_files/* )
for file in "${files[@]}"
do
if [[ ${size%%$'\t'*} -lt $quota ]];
then
echo still under quota;
cp -v "$file" /Users/work/Desktop/TEMP_EXR;
du -sg /Users/work/Desktop/TEMP_EXR;
else
echo over quota;
fi
done
需要注意的两件事是:1)在for列表中引用数组扩展,2)为$file
命令引用cp
。