Như các bạn đã biết để tìm một file bạn có thể sử dụng lệnh find để tìm kiếm, để xoá thì sẽ sử dụng lệnh rm để xoá. Và ở bài viết này mình sẽ hướng dẫn bạn kết hợp find và remove để tìm và xoá file/thư mục theo các định dạng.
Find and Remove file bằng một lệnh duy nhất
- Cú pháp lệnh cơ bản sẽ như sau
$ find dir-name criteria action
Trong đó:
- dir-name: Xác định thư mục cần thực hiện
- criteria:Chọn các file theo định dạng ví dụ như “*
.sh
” ”*.php
” ”*.png
“ - action:Hành động sau tìm kiếm ví dụ như là xoá file….
Ví dụ: Bạn cần xoá nhiều file như sau ‘*.jpg
’ or ‘*.sh
’ Bạn sẽ nhập lệnh là
$ find . -name "FILE-TO-FIND" -exec rm -rf {} \;
- Hoặc
$ find /dir/to/search/ -type f -name "FILE-TO-FIND-Regex" -exec rm -f {} \;
Sự khác biệt duy nhất giữa hai cú pháp trên là lệnh đầu tiên loại bỏ các thư mục. Lệnh thứ hai chỉ xóa các file.
Trong đó, các tùy chọn như sau:
- -name “FILE-TO-FIND” : File pattern.
- -exec rm -rf {} \; : Delete all files matched by file pattern.
- -type f : Only match files and do not include directory names.
- -type d : Only match dirs and do not include files names.
Với các file bản mới lệnh find có thêm tuỳ chọn là --delete
thay vì bạn sử dụng -exec rm -rf {} \;
. Và sau đây là một số ví dụ
$ find /dir/to/search/ -type f -name "FILES-TO-FIND" -delete $ find /dir/to/search/ -type f -name "FILES-TO-FIND" -depth -delete $ find /dir/to/search/ -maxdepth 2 -type f -name "FILES-TO-FIND" -depth -delete
Xoá các file có phần mở rộng như sau
$ find . -type f -name "*.bak" -exec rm -f {} \;
- Hoặc
$ find . -type f -name "*.bak" -delete