簡體   English   中英

合並兩個文件夾並保持文件具有相同的名稱

[英]merge two folders and keeping the files have same name

我有多個源文件夾(這些文件夾中有很多名為 ip 地址的文件,例如Ex: 192.168.2.1 ),我想將它們合並到一個目標文件夾中。

使用終端在Linux上執行此操作的方法是什么。

來源 1

/Desktop/source1/192.168.2.1
/Desktop/source1/192.168.2.2
/Desktop/source1/192.168.2.3

來源 2

/Desktop/source2/192.168.2.1
/Desktop/source2/192.168.2.2
/Desktop/source2/192.168.2.3

來源 3

/Desktop/source2/192.168.2.1

來源 4

來源 5

來源 6

.

.

.

目標

/Desktop/target/192.168.2.1
/Desktop/target/192.168.2.2
/Desktop/target/192.168.2.3
/Desktop/target/192.168.2.1.copy
/Desktop/target/192.168.2.2.copy
/Desktop/target/192.168.2.3.copy
/Desktop/target/192.168.2.1.copy.copy

原始文件沒有文件擴展名,我只是將它們命名為它們的名稱,但我在 gedit 或任何文本編輯器中打開它們。 重復的文件后綴可能是('192.168.2.3.copy 或 192.168.2.3_2 或任何需要不同的東西)

在 Linux 中使用 cp 命令、shell 腳本或任何其他命令執行此操作的方法是什么?

cp source1/* target/
cp -f --backup --suffix='.copy' source2/* target/

只要注意這不會增加.copy后綴到在任何文件source2而不是在source1 也就是說,只會為重復的文件名添加.copy

對於多個源文件夾,您可以執行以下操作:

cp source1/* target/
for i in {2..n} ; do
    cp -f --backup=numbered source${i}/* target/
done

n替換為您的文件夾編號。 這將為第一個副本放置.~1~ ,為第二個副本放置.~2~ ,依此類推。

穆尼爾的回答是完美的。 我的聲譽太低,無法評論他的解決方案,但我想提一下為什么這樣做:

cp -f --backup --suffix='.copy' source2/* target/

通常 --backup 將備份目標文件夾中的文件,在末尾附加一個“~”。 后綴選項用復制改變“~”。 那么為什么這個解決方案會更改源文件而不是目標文件的名稱呢? 這是在行中添加了 -f 選項,這與 -f 通常所做的行為完全不同。 手冊頁的最后一段記錄了這一點:

作為一種特殊情況,當給定 force 和 backup 選項並且 SOURCE 和 DEST 與現有常規文件的名稱相同時,cp 會備份 SOURCE。

暫無
暫無

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

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