[bash]如何更新文件夹的内容

时间:2013-02-19 22:25:38

标签: bash stat

这是我的情况:

我有两个文件夹(A1和B1),我希望A1中包含的每个文件和子文件夹都被复制到带有时间戳的B1中。我还想要,如果文件被修改,必须使用新的时间戳将其复制到B1中。

这样:

A1 contains: pluto.txt pippo(empty folder)

B1 contains: pluto_timestamp.txt pippo(empty folder)

2天后:

A1 contains: pluto.txt pippo(empty folder)

B1 contains: pluto_timestamp.txt pluto_timestamp2days.txt pippo(empty folder)

我的想法是:

以递归方式启动 stat 命令,并将输出保存到txt文件中。

就像一个轮询器,当我的脚本被安排时,我想检查每个文件的修改字段,看看是否有一些文件被修改过。也许我可以通过另一次启动 stat 命令

来做到这一点
PSEUDOCODE

while (A1 =! empty) {

open stat_result.txt

if file_A1 already exists in_B1

       if modify_date_A1 =! modify_date_B1

                cp file_A1_TIMESTAMP into B1

       else do nothing

else 

   cp file_A1_FILESTAMP into B1  #because it doesn't exist yet

}

希望它可以更清楚。感谢

2 个答案:

答案 0 :(得分:0)

rsync --archive --dry-run A1/ B1/

https://stackoverflow.com/tags/rsync/info

答案 1 :(得分:0)

# first create the directories in B1, if they do not already exist
# then copy the timestamped files to B1, if they are not there yet
(cd A1; find -type d)|(cd B1; xargs mkdir -p)
(cd A1; find -type f)|
while read file
do  cp -n A1/$file B1/$(<<<$file sed "s,.*/[^.]*,&_`date -rA1/$file +%F_%T`,")
done