Bash 如何找到文件的大小

Bash 如何找到文件的大小,bash,Bash,我试图得到文件的大小,如果大小是过度限制和cp这些文件和空相同的文件 如何实现这一点 FILE=a.txt FILE_SIZE = `stat -c %s $FILE` if [ $FILESIZE >= 1000 ]; then cp $FILE /tmp/ # How to empty file ? then 但请注意,如果仍有内容写入文件,则会丢失cp和echo之间发生的输出。您最好执行以下操作: echo > $FILE 因为它的持续时间接近

我试图得到文件的大小,如果大小是过度限制和cp这些文件和空相同的文件

如何实现这一点

FILE=a.txt 
FILE_SIZE = `stat -c %s $FILE`

if [ $FILESIZE >= 1000  ]; then 

   cp $FILE /tmp/

   # How to empty file ? 

then 

但请注意,如果仍有内容写入文件,则会丢失
cp
echo

之间发生的输出。您最好执行以下操作:

echo > $FILE
因为它的持续时间接近原子级

然后
mv
将其保存到
tmp
文件系统,然后进程将重新创建一个新的
${FILE}

请记住,如果有一个长期的进程写入
${FILE}
,它将在第一次移动后继续写入
${FILE}.staging

但是,如果有很多进程打开/写入/关闭文件,那么原子移动可能是最安全的方法

mv ${FILE} ${FILE}.staging