Find

如何根據大小移動文件?

  • August 9, 2019

我試過這個:

find . -type f -size 128 -exec mv {} new_dir/  \;

哪個不起作用,也沒有給我錯誤。這是使用時文件外觀的範例stat -x

$ stat -x ./testfile | grep Size 
 Size: 128          FileType: Regular File

從我的手冊頁(在 MacOS 10.11 機器上)

-size n[ckMGTP]
        True if the file's size, rounded up, in 512-byte blocks is n.  If
        n is followed by a c, then the primary is true if the file's size
        is n bytes (characters).  Similarly if n is followed by a scale
        indicator then the file's size is compared to n scaled as:

        k       kilobytes (1024 bytes)
        M       megabytes (1024 kilobytes)
        G       gigabytes (1024 megabytes)
        T       terabytes (1024 gigabytes)
        P       petabytes (1024 terabytes)

c(非標準擴展以外的後綴)。

因此,由於您沒有指定後綴,因此您的-size 128意思是 128 blocks或 64Kbytes 僅與大小在 127512+1 (65025) 和 128512 (65536) 字節之間的文件匹配。

-size 128c如果您想要恰好 128 字節-size -128c的文件、大小嚴格小於 128 字節(0 到 127)-size +128c的文件以及大小嚴格大於 128 字節(129 字節及以上)的文件,則應該使用。

引用自:https://unix.stackexchange.com/questions/310085