2010-11-06 41 views
19

Tôi khá mới đối với Linux (CentOS trong trường hợp này). Tôi có một thư mục với khoảng 2000 tệp trong đó. Tôi muốn thực hiện một cách lý tưởng một lệnh tại dấu nhắc lệnh để ghi tên của tất cả các tệp vào một tệp txt duy nhất.Cách gửi danh sách tệp trong thư mục tới tệp txt trong Linux

Nếu tôi phải làm, tôi có thể viết một chương trình thực tế để làm điều đó, tôi chỉ nghĩ rằng có thể có một cách đơn giản để làm điều đó từ dấu nhắc lệnh.

+1

Hãy cẩn thận với điều này, nó có thể cho tên tập tin chứa tất cả các loại nhân vật phức tạp. ví dụ. newline –

Trả lời

49

bạn chỉ có thể sử dụng

ls > filenames.txt 

(thường, bắt đầu một vỏ bằng cách sử dụng "Terminal", hoặc "vỏ", hoặc "Bash".) Bạn có thể cần phải sử dụng cd để đi đến thư mục đó đầu tiên , hoặc bạn có thể ls ~/docs > filenames.txt

+1

ngắn và ngọt ngào! –

+0

tuyệt vời, hoạt động tuyệt vời và thực sự đơn giản. – alchemical

+0

Rất may tôi googled này trước khi viết một kịch bản bash nhỏ! – JohnAllen

4

Nếu chỉ tên các tập tin thường xuyên ngay lập tức chứa trong một thư mục (giả định đó là ~/dirs) là cần thiết, bạn có thể làm

find ~/docs -type f -maxdepth 1 > filenames.txt 
+0

Làm thế nào để bỏ qua các tập tin nhất định như tệp sao lưu (tệp có "~" làm hậu tố trong tên của họ) ? –

+0

@VickyDev Một cách để lọc đầu ra 'find' thông qua' grep': 'find ~/docs -type f -maxdepth 1 | grep -v '~ $'> filenames.txt' – usta

+0

@VickyDev Một cách rõ ràng hơn là sử dụng 'find''s' -name' với '-not':' find ~/docs -type f -maxdepth 1 -not - name '* ~'> filenames.txt' – usta

Các vấn đề liên quan