tar: --exclude =“. git”: ไม่สามารถสถิติ: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว


11

นี่ทำให้ฉันบ้า ฉันต้องการtarไดเรกทอรี แต่ไม่รวมไฟล์บางไฟล์ นี่คือคำสั่งของฉัน:

tar -zcvf $NAME-$VERSION.tar.gz $NAME-$VERSION --exclude='.git' --exclude='.gitignore'

ในขณะที่คำสั่งดังกล่าวใช้งานได้กับ RedHat EL5 แต่ก็ไม่สามารถทำงานบน Mac OS 10.8.2 ฉันได้พยายามเปลี่ยน'ด้วย", และ\' \"ฉันพยายามลบเครื่องหมายเท่ากับ ไม่มีอะไรทำงาน

ผมทำอะไรผิดหรือเปล่า?


ใช้gnutarจาก Brew, MacPort และอื่น ๆ tar ของ Apple อ่อนแอเกินไป
jww

คำตอบ:


23

ตัวเลือกทั้งหมดจะต้องอยู่ด้วยกันก่อนอาร์กิวเมนต์และ-fแฟล็กต้องนำหน้าไฟล์ tar:

tar -zcv --exclude = '. git' --exclude = '. gitignore' -f $ NAME- $ VERSION.tar.gz $ NAME- $ VERSION

ถ้าคุณทำtar --help, ที่ไม่--excludeปรากฏในความช่วยเหลือหรือไม่ ผมไม่ทราบว่า OSX แต่บางทีอาจจะมีแทนของสต็อกgtar tar
Flup

2
อาฉันเห็นมัน :) ลองนี้ ธงคาดว่าชื่อไฟล์เป็นอาร์กิวเมนต์ถัดไป tar --exclude='.git' --exclude='.gitignore' -zcvf $NAME-$VERSION.tar.gz $NAME-$VERSION-f
Flup

ขออภัยแก้ไขแล้ว ฉันใหม่ที่นี่เพื่ออดทนกับฉัน!
Flup

2
สามารถยืนยันได้ว่าสิ่งนี้ใช้ได้กับ Mac - 10.9 เอาฉันไปหารุ่นที่ถูกต้องซึ่งเป็นเหตุผลที่ฉันแสดงความคิดเห็นที่นี่!
JohnAllen

2

สิ่งนี้ให้สิ่งที่คุณต้องการ:

tar czvf $NAME-$VERSION.tar.gz $NAME-$VERSION --wildcards --exclude=.git --exclude=.gitignore

1

ดูเหมือนว่าคุณต้องการกรองไดเรกทอรี. git วิธีที่ง่ายที่สุดคือการใช้ --exclude-vcs เพื่อแยกไดเรกทอรีระบบควบคุมเวอร์ชัน:

tar -zcvf $NAME-$VERSION.tar.gz $NAME-$VERSION --exclude-vsc

ฉันใช้ "tar (GNU tar) 1.27.1" บนเครื่อง Linux ของฉันดูเหมือนว่า BSD General Command ของ Mac (ไม่ใช่รุ่น GNU) ไม่สนับสนุนตัวเลือกนี้


คุณแน่ใจหรือไม่ว่าใช้กับ tar ของ Apple ได้ ดูแอปเปิ้ลหน้าคนtar(1) มันไม่ได้แสดงรายการหรือ--exclude-vsc --exclude-vcs
jww

ขอบคุณที่รัก @ jww สำหรับคำใบ้ของคุณ ฉันได้แก้ไขคำตอบของฉันให้มีประสิทธิภาพยิ่งขึ้น
Kayvan Tehrani
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.