Chcę uzyskać rozmiar pliku w zmiennej? Jak to zrobić?rozmiar pliku powłoki linuksowej
ls -l | grep testing.txt | cut -f6 -d' '
podał rozmiar, ale jak go przechowywać w zmiennej powłoki?
Chcę uzyskać rozmiar pliku w zmiennej? Jak to zrobić?rozmiar pliku powłoki linuksowej
ls -l | grep testing.txt | cut -f6 -d' '
podał rozmiar, ale jak go przechowywać w zmiennej powłoki?
size=`ls -l | grep testing.txt | cut -f6 -d' '`
Nie ma gwarancji, że rozmiar będzie w polu 6, gdy zostanie oddzielony spacją. –
Jest to również nieefektywne, ponieważ wypisywanie 'ls' do' grep' wymienia * wszystkie * pliki w katalogu i sortuje ich nazwy (co może zająć znaczną ilość czasu w katalogu z tysiącami plików), a dodatkowo jest podatne na błędy, ponieważ 'grep testing.txt' zwraca również pliki o nazwach takich jak' not_testingatxt_file' (jako '.' w regex oznacza match-any-character). –
można zrobić to w ten sposób z ls
(sprawdź stronę man rozumieniu -s)
$ var=$(ls -s1 testing.txt|awk '{print $1}')
Albo można użyć stat
z -c '%s'
Albo można użyć znajdź (GNU)
$ var=$(find testing.txt -printf "%s")
rozwiązanie find działa w MINGW i git bash w systemie Windows. Żadna z pozostałych odpowiedzi nie działa w MINGW. – JDiMatteo
Jeśli chciałeś wersji, która działała na * każdym * systemie POSIX, 'wc -c' byłoby lepsze niż poleganie na' ls' behavior * lub * na posiadaniu GNU 'find' lub' stat'. –
Zwróć uwagę, że wc -c jest dokładniejsze w przypadku pseudo plików takich jak/proc/cpuinfo – pixelbeat
size() {
file="$1"
if [ -b "$file" ]; then
/sbin/blockdev --getsize64 "$file"
else
wc -c < "$file" # Handles pseudo files like /proc/cpuinfo
# stat --format %s "$file"
# find "$file" -printf '%s\n'
# du -b "$file" | cut -f1
fi
}
fs=$(size testing.txt)
a=\`stat -c '%s' testing.txt\`;
echo $a
Bash Przypuszczam? – ziya
Tak, to jest powłoka bash i dziękuję wszystkim. –
Możliwy duplikat [Jak sprawdzić rozmiar pliku?] (Http://stackoverflow.com/questions/5920333/how-to-check-size-of-a-file) –