Điều này dự định để làm gì?
ls
liệt kê các tập tin trong thư mục hiện tại
$(ls)
thay thế đầu ra của ls
những nơi làm đối số chorm
- Về cơ bản
rm $(ls)
là nhằm xóa tất cả các tập tin trong thư mục hiện tại
Chuyện gì với bức tranh vậy ?
ls
không thể xử lý đúng các ký tự đặc biệt trong tên tệp. Người dùng Unix thường khuyên nên sử dụng các phương pháp khác nhau . Tôi cũng đã chỉ ra rằng trong một câu hỏi liên quan về việc đếm tên tập tin . Ví dụ:
$ touch file$'\n'name
$ ls
file?name
$ rm $(ls)
rm: cannot remove 'file': No such file or directory
rm: cannot remove 'name': No such file or directory
$
Ngoài ra, như được đề cập chính xác trong câu trả lời của Denis, một tên tệp có dấu gạch ngang hàng đầu, có thể được hiểu là đối số rm
sau khi thay thế, điều này đánh bại mục đích xóa tên tệp.
Những gì hoạt động
Bạn muốn xóa các tập tin trong thư mục hiện tại. Vì vậy, sử dụng toàn cầu rm *
:
$ ls
file?name
$ rm $(ls)
rm: cannot remove 'file': No such file or directory
rm: cannot remove 'name': No such file or directory
$ rm *
$ ls
$
Bạn có thể sử dụng find
lệnh. Công cụ này thường được đề xuất không chỉ cho thư mục hiện tại - nó có thể đi qua đệ quy toàn bộ cây thư mục và hoạt động trên các tệp thông qua-exec . . .{} \;
$ touch "file name"
$ find . -maxdepth 1 -mindepth 1
./file name
$ find . -maxdepth 1 -mindepth 1 -exec rm {} \;
$ ls
$
Python không có vấn đề với các ký tự đặc biệt trong tên tệp, vì vậy chúng tôi cũng có thể sử dụng nó (lưu ý rằng cái này chỉ dành cho các tệp, bạn sẽ cần sử dụng os.rmdir()
và os.path.isdir()
nếu bạn muốn hoạt động trên các thư mục):
python -c 'import os; [ os.remove(i) for i in os.listdir(".") if os.path.isfile(i) ]'
Trong thực tế, lệnh trên có thể được chuyển thành hàm hoặc bí danh ~/.bashrc
để cho ngắn gọn. Ví dụ,
rm_stuff()
{
# Clears all files in the current working directory
python -c 'import os; [ os.remove(i) for i in os.listdir(".") if os.path.isfile(i) ]'
}
Phiên bản Perl của điều đó sẽ là
perl -e 'use Cwd;my $d=cwd();opendir(DIR,$d); while ( my $f = readdir(DIR)){ unlink $f;}; closedir(DIR)'