Bỏ qua một tập tin cụ thể trong tập tin đếm số wc -l


0

ví dụ như tôi có thư mục như ABC. Và thư mục này chứa các tệp sau (nó chứa số tệp tôi chỉ chứa 4 tệp ở đây)

2014-04-29T06-19-20_17368f93ce.mp4.uploaded
2014-04-29T06-19-20_17368f93ce.mp4
2014-04-29T06-18-20_17368f93ce.mp4

Tôi có một file_namebiến nó chứa một trong các tên tệp có trong ABCthư mục.

I E file_name=2014-04-29T06-19-20_17368f93ce.mp4

Tôi đang sử dụng lệnh sau để tìm tổng số tệp kết thúc chỉ bằng .mp4 trong *ABC*thư mục

ls -1 /home/ABC/*.mp4 | wc -l

Vì vậy, tôi chỉ muốn ignore nộp số đếm trong file_namebiến

Có nghĩa file_countlà chỉ cần bỏ qua các tập tin trong file_name.


Đây có phải là một tập lệnh bash mà bạn đang tạo không? Nếu vậy, bạn có thể dán vào mã. Là biến file_name một mảng?
Chỉ cần may mắn thực sự

@ user3139907 - Thật ra tôi đang sử dụng lệnh shell trong tập lệnh ruby, đây không phải là tập lệnh shell. đây là tập lệnh ruby ​​và file_name là biến ruby
Prakash V Holkar

Câu trả lời:


0

Trước hết, không bao giờ phân tích đầu ra củals . Dưới đây là một số cách tiếp cận an toàn hơn:

  1. Sử dụng findgrep( wc -lkhông thành công với tên tệp có dòng mới):

    find /home/terdon/foo -not -name "$file_name"  -name '*.mp4' | grep -c /
    

    Các -notlá cờ làm cho findbỏ qua bất kỳ tập tin gọi $file_name.

  2. Trong trường hợp cụ thể này, nơi các tệp của bạn không chứa khoảng trắng và có lẽ bạn không cần phải xử lý các vấn đề về tính di động và ngôn ngữ, bạn có thể sử dụng ls. Nó chỉ là một thói quen xấu để có được vào. Vì vậy, để sử dụng phương pháp ban đầu của bạn, chỉ cần lọc ra những tên bạn không muốn sử dụng grep -v:

     ls -1 /home/ABC/*.mp4 | grep -v "$file_name" | wc -l
    
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.