GNU/Linux >> Belajar Linux >  >> Linux

Hapus hanya file dalam direktori di direktori BUKAN linux

Karena ini tinggi di pencarian google, jawaban paling sederhana adalah:

rm $directoryPath/*

di mana $directoryPath adalah direktori yang ingin Anda kosongkan. Kredit harus masuk ke cbm3384 (yang karena alasan tertentu mendapat suara negatif untuk jawaban ini, mengapa?)

Jika Anda tidak ingin mengonfirmasi:

rm -f $directoryPath/*

Kalau tidak percaya coba man rm atau

mkdir -p 1/2/3; echo 'hello1' > 1/hello1.txt; echo 'hello2' > 1/2/hello2.txt;echo 'hello3' > 1/2/3/hello3.txt
rm 1/2/*

Di atas membuat struktur direktori, yang memiliki 'helloX.txt' di setiap folder (X adalah level direktori). rm 1/2/* menghapus hello2.txt dan membiarkan struktur lainnya tetap utuh.

Juga rm */*/* hanya menghapus hello2.txt . Ini adalah satu-satunya yang cocok dengan polanya.

Hanya contoh Makefile yang membersihkan direktori cakephp tmp dan membiarkan struktur direktori tetap utuh:

clean:
    -rm -f tmp/*
    -rm -f tmp/*/*
    -rm -f tmp/*/*/*
    -rm -f tmp/*/*/*/*

Minus di depan rm berarti "jangan berhenti pada kesalahan" (direktori yang tidak dihapus mengembalikan kesalahan). Jika Anda ingin beberapa level disimpan, hapus saja baris itu, mis. baris rm kedua menghapus log.

Beri tahu saya jika Anda memiliki sistem yang melakukan hal lain (BSD?).

EDIT: Saya menguji ini di ubuntu 12.04, osx lion dan shell sourceforge.net. Semua berperilaku seperti penjelasan di atas.


find PATH -maxdepth 1 -type f -delete

TAPI ini tidak akan meminta Anda untuk konfirmasi atau menampilkan apa yang baru saja dihapus. Oleh karena itu sebaiknya jalankan tanpa tindakan -delete terlebih dahulu dan periksa apakah itu file yang benar.


Anda dapat menggunakan find dengan -type f hanya untuk file dan -maxdepth 1 jadi find tidak akan mencari file di sub-direktori /path/to/directory . rm -i akan meminta Anda pada setiap penghapusan sehingga Anda dapat mengonfirmasi atau menolak penghapusan. Jika Anda tidak peduli dimintai konfirmasi untuk setiap penghapusan, ubah ke rm -fv (-f untuk kekuatan yang menghapus). -v flag membuatnya sehingga dengan setiap penghapusan, sebuah pesan dicetak mengatakan file apa yang baru saja dihapus.

find /path/to/directory -maxdepth 1 -type f -exec rm -iv {} \;

Ini harus memenuhi kriteria:

BUKAN direktori
BUKAN subdirektori
BUKAN file di subdirektori ini.


Linux
  1. Cara Mengunggah atau Mengunduh File/Direktori Menggunakan sFTP di Linux

  2. Cara Menghapus File dan Direktori di Command Line Linux [Tutorial Pemula]

  3. Linux Hapus File dan Direktori

  1. Cara Menemukan File Di Linux Di Semua Direktori Secara Rekursif

  2. Salin file &direktori di Linux

  3. 9 direktori Linux yang harus Anda buat cadangannya dan yang tidak boleh

  1. Cara Mengganti Nama Direktori di Linux

  2. Membuat dan Menghapus File dan Direktori Di Linux

  3. Jumlah maksimum file/direktori di Linux?