find . -type f -print
พิมพ์ออกมา
./file1
./file2
./file3
วิธีใดก็ได้ในการพิมพ์
file1
file2
file3
เหรอ?
find . -type f -print
พิมพ์ออกมา
./file1
./file2
./file3
วิธีใดก็ได้ในการพิมพ์
file1
file2
file3
เหรอ?
f=`find . -name migration`; echo ${f/.\//}
คำตอบ:
หากอยู่ในไดเรกทอรีปัจจุบันเท่านั้น
find * -type f -print
นั่นคือสิ่งที่คุณต้องการ?
-printต้องมี มันให้ผลลัพธ์เดียวกันโดยไม่มีการตั้งค่าสถานะนั้น
ค้นหาเฉพาะไฟล์ปกติในไดเร็กทอรีปัจจุบันและพิมพ์โดยไม่มี./คำนำหน้า "":
find -type f -printf '%P\n'
จากการค้นหาคนคำอธิบาย-printfรูปแบบ:
% P ชื่อไฟล์ที่มีชื่อของอาร์กิวเมนต์บรรทัดคำสั่งซึ่งพบว่าถูกลบออก
findรองรับ-printf(ไม่ใช่ทั้งหมด)
\0แทน\nถ้าคุณต้องการxargs -0find -type f -printf '%P\0' | xargs -0 head
brew install findutils;)
ใช้ sed
find . | sed "s|^\./||"
find -exec?
find -exec sh -c "echo {} | sed 's|^\./||'" \; หรือ find -exec sh -c "sed 's|^\./||' <<< '{}'" \;
มันอาจจะสั้นลง
find * -type f
2> /dev/nullจะละเว้นข้อผิดพลาดที่รายงานเมื่อรันคำสั่งในไดเร็กทอรีว่าง
เนื่องจาก-printfตัวเลือกไม่มีใน OSX findนี่คือคำสั่งเดียวที่ใช้งานได้บน OSX find ในกรณีที่มีคนไม่ต้องการติดตั้งgnu findโดยใช้brewetc:
find . -type f -execdir printf '%s\n' {} +
find . -type f -exec bash -c 'for f; do echo "${f#./}"; done' {} +
อีกวิธีในการลอก. /
find * -type d -maxdepth 0
-exec /path/to/myscript.sh {}ในของคุณfindที่-printf '%P\n'ไม่ได้ทำงาน แต่ฉันต้องทำ./คำนำหน้าในสคริปต์โดย:p=${1#"./"}