簡體   English   中英

[Unix] [Shell腳本]將所有文件從一個文件夾復制到另一個文件夾

[英][Unix][Shell Script] Copy all files from one folder to the other

我正在嘗試為日常cronjob創建一個bash shell腳本。

該腳本是將所有帶有txt擴展名的文件(包括子目錄)從文件夾“ fromDir”復制到文件夾“ toDir”。

如果“ toDir”目錄不存在,它也會建立目錄。

我試圖在這里使用tar壓縮文件並在移動后進行解壓縮以加快傳輸過程中的時間,目標文件夾的結構應與原始文件夾完全相同。

#!/bin/bash -l

fromDir='c:/fromFolder/' ;
toDir='c:/toFolder/' ;
find $fromDir -maxdepth 3 -name '*.txt' -print |
tar zcvf - -T - |
mkdir -p -m 777 $toDir ;
cd $toDir && tar zxvf -

首先看到我的評論,然后,如果您的tar不支持-C參數(更改為dir befor tar),則可以嘗試以下操作:

#!/bin/bash

fromDir='c:/fromFolder/' ;
toDir='c:/toFolder/' ;
mkdir -p -m 777 $toDir ;
find $fromDir -maxdepth 3 -name '*.txt' -print |
tar zcf - -T - | (
    cd $toDir
    tar zxvf -
)

如果您可以使用rsync ,則可以嘗試以下操作:

rsync -av --include="*/" --include="*.txt" --exclude="*" ~/from/ ~/to/ --dry-run

這可以解釋為包含*.txt每個目錄並排除其他任何內容(順序很重要)

--dry-run選項僅用於打印將要執行的操作,但不會復制任何文件。

暫無
暫無

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

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