簡體   English   中英

(Linux) 用另一個文件中的數據遞歸地覆蓋文件夾中的所有文件

[英](Linux) Recursively overwrite all files in folder with data from another file

我發現自己處於與此問題類似的情況: Linux: Overwrite all files in folder with specified data? 那里的答案很好用,但是,它們適用於輸入的文本。 請允許我提供上下文。

我有一個 Linux 終端,其文件結構如下:(刪除了與問題無關的文件和文件夾)

root/
  empty.svg
  svg/
    257238.svg
    297522.svg
    a7yf872.svg
    236y27fh.svg
    38277.svg
    ... (~200 other .svg files with arbitrary names)
    2903852.svg

我正在使用的框架需要這些.svg 文件以這些特定的文件名存在,但顯然,它並不關心它們包含的 SVG 圖像。 我不打算使用這些文件,它們會占用大量磁盤空間,所以我希望將它們全部轉換為空的 SVG,也就是我根目錄上的empty.svg文件,這是一個 12x12 透明 SVG 文件( 124 字節)。 這樣,框架就不會像我嘗試使用此問題頂部鏈接的問題的答案簡單地用純文本覆蓋這些 SVG 的原始數據時那樣出錯。 我嘗試了很多方法,嘗試用我的基本 Linux 命令行知識來創造,但沒有成功。 我該如何做到這一點?

TL;DR:如何使用 Linux CLI 中另一個文件的原始數據遞歸地覆蓋文件夾中的所有文件?

與鏈接類似,您可以使用tee命令,但不要使用echo使用cat來復制文件內容,其中cat是讀取文件內容的命令。

cat empty.svg | tee svg/257238.svg svg/297522.svg <etc>

但是如果svg目錄中有很多文件,使用循環自動執行前面的命令將很有用:

for f in svg/*; do
    if [[ "$f" == *.svg ]]; then
        cat empty.svg > "$f"
    fi
done

這里我們使用管道重定向來連接命令並重定向之前的命令 output。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM