Find unix komutunu kullanarak mutlak yolu nasıl alabilirim


11

Find komutunu kullanarak mutlak yol elde etme.
aslında aşağıdaki komut dosyasını çalıştırıyorum: -

find . -size +20M | while read a
do
     i=$(echo $a | sed 's:/: :g')
     echo $a;
     j=($i)
     fileName=${j[${#j[@]}-1]}
     userName=${j[${#j[@]}-3]}
done

ama burada $abaşlayan yol gösteren değişken ./Downloads/filenameama mutlak yol istiyorum /.

Yanıtlar:


16

Bul komutunu mutlak bir yolla kullanın.

find /path/ -size +20M

Tüm yolu yazdıracaktır.
Çalışma dizinini bilmiyorsanız, bunun için komut yerine kullanın pwd:

find "`pwd`" -size +20M 
   #or like this:
find "$(pwd)" -size +20M

Çalışma dizininizi almak için

Neyse, Bash adam şimdi kullanmayı tavsiye görünüyor $()üzerinde ``ikinci formu kullanarak bu yüzden. Ayrıca, muhtemelen $PWDkomut dosyanızın çalışma dizinini içeren değişkene de başvurabilirsiniz ve bir döngüde kullanmak zorundaysanız muhtemelen daha hızlı olacaktır.

find "$PWD" -size +20M

Ama yolum yok, sadece var. geçerli dizin olarak?
Shivam Sharma

2
Başlamayın ., $(pwd)bunun yerine kullanın, bu size tam bir yol verecektir.
BSD

8

pwdKomutu kullanabilir veya dosyayı yazdırabilirsiniz realpath:

$ find "$(pwd)" -size +20M
$ find . -size +20M -exec realpath {} +

Her iki komut da size dosyaların mutlak yolunu verir.


Ama 2. kişi buluyor: `` realpath ': Böyle bir dosya veya dizin yok
Shivam Sharma

Hum. coreutilsPaket tarafından sağlansa da belki kurulu değil . Bulmaya çalışın which realpath.
Spack

Hiçbir şey
bulamıyor

Hangi sistemi kullanıyorsunuz?
Spack

Linux BANE 3.7-trunk-amd64 # 1 SMP Debian 3.7.2-0 + kali8 x86_64 GNU / Linux
Shivam Sharma

0

Bitiş 7 günlük mutlak yolla tüm PNG ve JPEG dosyalarını listeler.

$ find $PWD/ -mtime -7 -print -exec grep -e ".png\|.jpg" {} \;

$PWDEşleşen her dosyaya burada eklenir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.