ฉันจะแสดงรายการเนื้อหาของไฟล์ทั้งหมดซ้ำ ๆ ใน repository (extension-agnostic) ลงในไฟล์ข้อความเดียวได้อย่างไร


1

ฉันรู้ว่าใช้ "ls -R" ในทุบตีคุณสามารถเรียกรายการชื่อซ้ำ

ฉันสามารถใช้คำสั่งที่คล้ายกันเพื่อแสดงรายการเนื้อหาของแต่ละไฟล์ในแบบที่ชื่อของพวกเขาแสดงโดยใช้คำสั่ง ls ได้หรือไม่ ฉันหมายถึงไฟล์เดียวหรือสตรีมเช่นเอาต์พุตมาตรฐาน

มีวิธีที่ฉันสามารถจัดรูปแบบผลลัพธ์จากคำสั่งดังกล่าวหรือไม่ เช่นพูดเพิ่มบางสิ่งบางอย่างเช่นบรรทัดว่างสองสามบรรทัดระหว่างเนื้อหาของแต่ละไฟล์เพื่อให้อ่านได้ง่ายขึ้น?

คำตอบ:


0
find . -type f | while read file;
do
  # Here you can do whatever you like
  # Like output a few empty lines
  echo
  echo

  # output filename
  echo $file      
  # this prints the contents of the file to STD OUT
  cat $file;

done > targetfile

แต่คุณจะนำทุกอย่างมารวมกันเป็นไฟล์เดียวได้อย่างไร เมื่อฉันลองทำสิ่งนี้มันจะเข้าสู่วงวนไม่รู้จบ cat ส่งไฟล์เดียวกันซ้ำแล้วซ้ำอีก
slhck

@slhck - วนซ้ำหรือไม่ ฉันไม่เห็นวิธี
Nifle

ฉันจะใช้สิ่งนี้ได้อย่างไร: ค้นหา -type f -exec cat {} \; จะใส่ลงในไฟล์เดียวได้อย่างไร?
Arpith

@Arpith - find . -type f -exec cat {} \; > /path/to/your/outputfile
Nifle

@Nifle: ฉันคิดว่าคำสั่งแสดงรายการเนื้อหาของไฟล์เดียวกันซ้ำ ๆ มากกว่าที่จะเจาะลึกถึงลำดับขั้นตอนของระบบแฟ้มและแสดงรายการเนื้อหาของไฟล์ต่างๆ
Arpith

0

สร้างเมตาสคริปต์ด้วยการค้นหาและไพพ์ไปยัง sh

$ find /home/jaroslav/tmp/su/  2>/dev/null \
    -printf 'echo -e \\\\n\\\\n%p\ncat "%p"\n' |sh

ออก:

/home/jaroslav/tmp/su/
cat: /home/jaroslav/tmp/su/: Is a directory


/home/jaroslav/tmp/su/diff.tar.gz
J▒▒P▒▒M
6▒M)FR▒▒▒▒▒▒F2▒/9▒e▒▒s]▒N▒h▒▒ޫzr▒▒hD▒▒Z&▒▒X▒▒|*▒o▒▒z▒▒▒▒|x߁▒▒E▒▒▒4▒▒Kऺ▒▒J▒-▒B▒▒▒Z▒▒▒?▒▒▒▒▒
        ▒▒P▒▒鿶▒▒JF▒j▒=Z▒?%▒▒▒▒▒▒▒▒▒▒▒{▒▒▒M▒▒▒▒$▒▒q(

/home/jaroslav/tmp/su/while
while read line; do
    login=$(echo $line | cut -d : -f 1)
        echo $login
done < /etc/passwd
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.