ฉันต้องการคัดลอกไฟล์ไปยังโฟลเดอร์ย่อยทั้งหมดในโฟลเดอร์ ฉันจะทำสิ่งนี้กับบรรทัดคำสั่งได้อย่างไร
ฉันต้องการคัดลอกไฟล์ไปยังโฟลเดอร์ย่อยทั้งหมดในโฟลเดอร์ ฉันจะทำสิ่งนี้กับบรรทัดคำสั่งได้อย่างไร
คำตอบ:
วิธีวางไฟล์ในไดเรกทอรีการทำงานปัจจุบันในโฟลเดอร์ย่อยทั้งหมด (และอาจเป็นโฟลเดอร์ย่อยขึ้นอยู่กับสิ่งที่คุณต้องการจะทำ)
สิ่งนี้จะนำไฟล์ไปไว้ในโฟลเดอร์ย่อยทั้งหมด แต่ไม่ใช่โฟลเดอร์ย่อย:
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 นี้
คุณสามารถใช้หนึ่งซับ:
find <target-dir> -type d -exec cp <the file> {} \;
จำกัดความลึกที่ 1 -> เฉพาะไดเรกทอรีทันที
find <target-dir> -type d -maxdepth 1 -exec cp <the file> {} \;