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 -0
find -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
โดยใช้brew
etc:
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#"./"}