Folder saya parent
memiliki konten berikut:
A.Folder B.Folder C.File
Ini memiliki folder dan file di dalamnya. B.Folder
lebih baru. Sekarang saya hanya ingin mendapatkan B.Folder
, bagaimana saya bisa mencapai ini? Saya mencoba ini,
ls -ltr ./parent | grep '^d' | tail -1
tapi itu memberiku drwxrwxr-x 2 user user 4096 Jun 13 10:53 B.Folder
, tapi aku hanya butuh namanya B.Folder
.
shell
files
ls
timestamps
Daniel
sumber
sumber
ls -ltr ./parent | grep '^d' | tail -1| awk '{print $NF}'
Jawaban:
Coba ini:
-t
opsi buatls
urutkan berdasarkan waktu modifikasi, terbaru terlebih dahulu.Jika Anda ingin menghapus
/
:sumber
/
?ls -td -- ./parent | head -n 1
tidak memberi saya hasil yang benar, apakah saya HARUS menggunakan subshell seperticd ./parent
setiap kali dan menjalankan perintah ini? Ada solusi?Perbedaan solusi Herson adalah slash after
*
, yang membuat shell mengabaikan semua file non-dir. Perbedaan ke Gnouc , itu akan berfungsi jika Anda berada di folder lain.Cut perlu mengetahui jumlah direktori induk (2) untuk menghapus trailing '/'. Jika Anda tidak memilikinya, gunakan
sumber
Wajib jawab zsh:
Karakter dalam tanda kurung adalah kualifikasi global :
/
untuk mencocokkan hanya direktori,om
mengurutkan pertandingan dengan bertambahnya usia, dan[1]
untuk mempertahankan hanya pertandingan pertama (yaitu yang terbaru). TambahkanN
jika Anda ingin mendapatkan array kosong (biasanya Anda mendapatkan array 1-elemen) jika tidak ada subdirektori dariparent
.Atau, dengan asumsi
parent
tidak mengandung karakter globbing shell:Jika Anda tidak memiliki zsh tetapi Anda memiliki alat GNU baru-baru ini (yaitu, Linux atau Cygwin yang tidak tertanam), Anda dapat menggunakan
find
, tetapi ini rumit. Ini salah satu caranya:Ada solusi sederhana
ls
, yang berfungsi selama tidak ada nama direktori yang mengandung baris baru atau (pada beberapa sistem) karakter yang tidak dapat dicetak:sumber
Anda dapat melakukan:
sumber
Perintah berikut akan melakukan pekerjaan bahkan dalam kasus nama direktori yang mengandung ruang:
Penjelasan yang diperbarui dari hal-hal di backticks adalah:
.
- direktori saat ini (Anda mungkin ingin menentukan jalur absolut di sini)-mindepth/-maxdepth
- Batasi perintah find hanya untuk anak-anak langsung dari direktori saat ini-type d
- hanya direktori-exec stat ..
- Output waktu yang dimodifikasi dan nama direktori dari find dipisahkan dengan tab (dan bukan spasi)sort -n -r |head -1 | cut -f2
- date memerintahkan direktori dan menampilkan seluruh nama yang paling baru-baru ini dimodifikasi (bahkan jika mengandung beberapa ruang sebagai tab pembatas default cut)sumber