Tôi có kịch bản bash sau đây.
while IFS= read -r filename;
do [[ $(md5 path/to/"$filename-orig") = $(md5 path/to/"$filename") ]] || echo $filename differs;
done < path/to/list-of-files-to-compare.txt
Bạn nên so sánh hai tệp (bằng cách tính toán thông báo băm MD5 của chúng) sau đó báo cáo nếu chúng khác nhau. Nó nhận được các tập tin để so sánh từ một danh sách.
Vấn đề là nếu tập tin tôi đang cố đọc, hãy nói,
path/to/foo-orig.js
đoạn script sẽ tìm tập tin tại
path/to/foo.js-orig
và, rõ ràng, điều này ném một lỗi và thất bại.
Làm cách nào để sửa lỗi này trong tập lệnh của tôi để tôi xử lý .js
phần mở rộng chính xác?
Chỉnh sửa
TL; DR:
Cho một chuỗi foo.bar
làm thế nào tôi có thể nhận được foo-orig.bar
?
Chỉnh sửa2:
Tôi thêm -orig
tiện ích mở rộng vì dự án này lấy một mẫu được cập nhật thường xuyên bởi bên thứ ba, sau đó tôi phủ lên các thay đổi của mình đối với nó. Vì vậy, tôi muốn theo dõi những tập tin họ thay đổi để tôi có thể quay lại và điều chỉnh mã của mình khi cần thiết.
list-of-files-to-notify.txt trông giống như sau.
list-of-files-to-notify.txtpublic/assets/images/logos/logo.svg
README.md
src/auth/Auth.js
src/auth/store/actions/login.actions.js
src/auth/store/actions/user.actions.js
src/auth/store/reducers/user.reducer.js
src/firebaseService/firebaseService.js
src/firebaseService/firebaseServiceConfig.js
src/fuse-configs/fuseNavigationConfig.js
src/fuse-configs/fuseRoutesConfig.js
src/index.js
src/main/content/components/ComponentsConfig.js
src/main/content/login/Login.js
src/store.js
src/store/actions/index.js
src/store/reducers/index.js
-orig
vào ở nơi đầu tiên? Làm thế nào đểlist-of-files-to-compare.txt
trông như thế nào?