GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mendaftar satu nama file per baris keluaran di Linux?

Ya, Anda dapat dengan mudah membuat ls output satu nama file per baris:

ls -a | cat

Penjelasan:Perintah ls merasakan jika keluarannya adalah ke terminal atau ke file atau pipa dan menyesuaikannya.

Jadi, jika Anda mem-pipe ls -a untuk python itu harus bekerja tanpa tindakan khusus.


Anda dapat menggunakan ls -1

ls -l juga akan melakukan pekerjaan


Gunakan -1 opsi (perhatikan ini adalah angka "satu", bukan huruf kecil "L"), seperti ini:

ls -1a

Namun, pertama-tama, pastikan ls Anda mendukung -1 . GNU coreutils (diinstal pada sistem Linux standar) dan Solaris melakukannya; tetapi jika ragu, gunakan man ls atau ls --help atau periksa dokumentasi. Misalnya:

$ man ls
...
       -1     list one file per line.  Avoid '\n' with -q or -b

Ls dirancang untuk konsumsi manusia, dan Anda tidak boleh mengurai hasilnya.

Dalam skrip shell, ada beberapa kasus di mana penguraian keluaran ls berfungsi adalah cara paling sederhana untuk mencapai efek yang diinginkan. Karena ls mungkin memotong-motong karakter non-ASCII dan kontrol dalam nama file, kasus ini adalah subset dari kasus yang tidak memerlukan mendapatkan nama file dari ls .

Dalam python, sama sekali tidak ada alasan untuk memanggil ls . Python memiliki semua ls fungsi built-in. Gunakan os.listdir untuk membuat daftar isi direktori dan os.stat atau os untuk mendapatkan file metadata. Fungsi lain di os modul juga cenderung relevan dengan masalah Anda.

Jika Anda mengakses file jarak jauh melalui ssh, cara yang cukup andal untuk mencantumkan nama file adalah melalui sftp:

echo ls -1 | sftp remote-site:dir

Ini mencetak satu nama file per baris, dan tidak seperti ls utilitas, sftp tidak memotong-motong karakter yang tidak dapat dicetak. Anda tetap tidak dapat mencantumkan direktori dengan andal di mana nama file berisi baris baru, tetapi hal itu jarang dilakukan (ingat ini sebagai potensi masalah keamanan, bukan masalah kegunaan).

Dalam python (berhati-hatilah karena karakter meta shell harus diloloskan dalam remote_dir ):

command_line = "echo ls -1 | sftp " + remote_site + ":" + remote_dir
remote_files = os.popen(command_line).read().split("\n")

Untuk interaksi yang lebih kompleks, lihat mode batch sftp di dokumentasi.

Pada beberapa sistem (Linux, Mac OS X, mungkin beberapa unit lainnya, tetapi jelas bukan Windows), pendekatan yang berbeda adalah memasang sistem file jarak jauh melalui ssh dengan sshfs, lalu bekerja secara lokal.


Linux
  1. Cara Mengekstrak File tar.gz di Linux dengan Menggunakan Command Line

  2. Cara Mengarahkan Output ke File dan Stdout di Linux

  3. Bagaimana Cara Memindahkan Garis Dalam File Teks Ke Atas Atau Ke Bawah Dengan Satu Baris?

  1. Linux – Bagaimana Cara Memeriksa Informasi Struktur Direktori File Unix/linux?

  2. Bagaimana Mengganti Nama File di Linux?

  3. Bagaimana cara mencetak keluaran perintah Linux ke file?

  1. Cara Menyimpan Output Perintah ke File di Linux

  2. Cara Menyalin Izin dan Kepemilikan File ke File Lain di Linux

  3. Cara Menambahkan Nomor Baris Ke File Teks Di Linux