คัดลอกเนื้อหา / ไฟล์ไปยังไดเรกทอรีย่อยทั้งหมดในไดเรกทอรีโดยใช้เทอร์มินัล


17

ฉันต้องการคัดลอกไฟล์ไปยังโฟลเดอร์ย่อยทั้งหมดในโฟลเดอร์ ฉันจะทำสิ่งนี้กับบรรทัดคำสั่งได้อย่างไร

คำตอบ:


26

วิธีวางไฟล์ในไดเรกทอรีการทำงานปัจจุบันในโฟลเดอร์ย่อยทั้งหมด (และอาจเป็นโฟลเดอร์ย่อยขึ้นอยู่กับสิ่งที่คุณต้องการจะทำ)

สิ่งนี้จะนำไฟล์ไปไว้ในโฟลเดอร์ย่อยทั้งหมด แต่ไม่ใช่โฟลเดอร์ย่อย:

for d in */; do cp water.txt "$d"; done

การดำเนินการนี้จะทำให้ไฟล์water.txt(เปลี่ยนอินสแตนซ์ทั้งหมดของ water.txt เป็นชื่อไฟล์ที่คุณต้องการคัดลอก) ในโฟลเดอร์ย่อยและโฟลเดอร์ย่อยทั้งหมด

for i in ./* # iterate over all files in current dir
do
    if [ -d "$i" ] # if it's a directory
    then
        cp water.txt "$i" # copy water.txt into it
    fi
done

ข้อมูลจากกระทู้ linuxquestions นี้


13

คุณสามารถใช้หนึ่งซับ:

find <target-dir> -type d -exec cp <the file> {} \;

จำกัดความลึกที่ 1 -> เฉพาะไดเรกทอรีทันที

find <target-dir> -type d -maxdepth 1 -exec cp <the file> {} \;


2
สิ่งนี้ทำทุกไดเรกทอรีย่อยซ้ำไม่เพียงไดเรกทอรีย่อยทันที
Anake

2
@Anake อัปเดตคำตอบของฉัน
ortang

คำตอบนี้ยอดเยี่ยมมาก!
Jinhua Wang
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.