Linux

列印文件大小小於 100 字節的文件

  • June 18, 2017

該腳本應該列印出文件大小和目錄中小於 100 字節的所有文件的名稱。我編寫的這個腳本在我的 Ubuntu 上完美執行,但在我的 Mac OS Lion 上無法執行。誰能告訴我為什麼?

#!/bin/bash

for i in $(ls)
do
 if [[ $(wc -c $i | cut -d" " -f1) -le 100 ]]; then
   echo $(wc -c $i)
 fi
done

哇。看起來你讓這變得比它必須的更困難:

find . -size -100c -exec stat -c "%s : %n" {} \;

完畢。

請參閱這篇文章:嵌套 bash if/and/or statement not working going from OS X to Ubuntu

Ubuntu 使用dash,我不確定你是在使用bash還是在 OSX 上使用什麼。將其放在頂部以確保您在兩個系統上使用相同的 shell:

#! /usr/bin/env bash

-或者-

#!/bin/bash

您還可以echo $SHELL從命令行查看您正在使用的 shell。使用bash腳本,您可以通過在頂部添加以下行來打開調試:

set -x

例如

% ls -l
total 4
-rw-rw-r-- 1 saml saml   0 Jan 30 20:30 a1
-rw-rw-r-- 1 saml saml   0 Jan 30 20:30 a2
-rwxrwxr-x 1 saml saml 151 Jan 30 20:45 a.bash

% ./a.bash 
0 a1
0 a2

啟用 set -x

% ./a.bash 
++ ls
+ for i in '$(ls)'
++ wc -c a1
++ cut '-d ' -f1
+ [[ 0 -le 100 ]]
++ wc -c a1
+ echo 0 a1
0 a1
+ for i in '$(ls)'
++ wc -c a2
++ cut '-d ' -f1
+ [[ 0 -le 100 ]]
++ wc -c a2
+ echo 0 a2
0 a2
+ for i in '$(ls)'
++ wc -c a.bash
++ cut '-d ' -f1
+ [[ 123 -le 100 ]]

資源

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