Bash
/usr/bin/truncate: 參數列表太長
我想使用該
truncate
命令創建大量小文件進行測試。我用少量文件(100 個)嘗試了該命令,它起作用了。當我將數字更改為1000000時,它會報告錯誤:root:[~/data]# truncate -s 1k {1..100} root:[~/data]# rm -rf * root:[~/data]# truncate -s 1k {1..1000000} -bash: /usr/bin/truncate: Argument list too long root:[~/data]#
我該如何解決?我有一種
xargs
可以使用的感覺,但我無法讓它發揮作用。
你可以做
echo {1..1000000} | xargs truncate -s 1k
(這應該與不受命令行長度限制的內置 echo 的 shell 一起使用。
xargs
預設情況下還會在任何空格上拆分輸入,但這並不重要。)以上可能會使用大量記憶體,因此
seq
在 mosvy 的評論中使用 like 可能會更好:seq 1 1000000 | xargs truncate -s 1k
我通常使用一個循環(這從
000000
, not開始1
,並且所有名稱中都有前導零):for i in {000..999}; do touch "$i"{000..999} done
在一個目錄中擁有一百萬個文件可能會很慢,所以除非你只是在測試它,否則最好將它們分散到子目錄中,比如:
for i in {000..999}; do mkdir "$i" touch "$i"/{000..999} done
請注意,如果您無法創建文件,因為它們不適合一個命令行並以某種方式解決該問題,您可能無法使用其中
rm -f *
任何一個來刪除它們。您需要遞歸刪除整個樹,或者執行類似find -maxdepth 1 -type f -delete
.