我有兩個相同目錄樹的副本。他們幾乎在兩個文件中都有相同的文件(一個版本可能有一些額外的文件或丟失的文件)。但是,大多數文件在兩個目錄中都是相同的(具有相同的相對路徑和所有內容)。複製文件權限,但不復制文件
承擔這些都是目錄:
version1/
version2/
的問題是,在VERSION1權限/弄亂了,我想在從版本2 /權限複製,但做到這一點,無需更換文件在版本1 /更新。
是否有自動化的方式通過bash來做到這一點? (它不一定是bash,也可以是其他方法/編程語言)。
我有兩個相同目錄樹的副本。他們幾乎在兩個文件中都有相同的文件(一個版本可能有一些額外的文件或丟失的文件)。但是,大多數文件在兩個目錄中都是相同的(具有相同的相對路徑和所有內容)。複製文件權限,但不復制文件
承擔這些都是目錄:
version1/
version2/
的問題是,在VERSION1權限/弄亂了,我想在從版本2 /權限複製,但做到這一點,無需更換文件在版本1 /更新。
是否有自動化的方式通過bash來做到這一點? (它不一定是bash,也可以是其他方法/編程語言)。
你應該看看--reference
選項chmod
:
chmod --reference version2/somefile version1/somefile
以固定方式應用find
和xargs
,你應該罰款,即像
~/version2$ find . -type f | xargs -I {} chmod --reference {} ../version1/{}
這甚至作品遞歸地,並且對目標目錄中丟失的文件是健壯的(bar 沒有這樣的文件...錯誤,這可以被忽略)。當然,它不會對只存在於目標目錄中的文件執行任何操作。
歡呼聲,
只是爲了conf irm,在上面的命令中,它將版本2更改爲匹配版本1,而不是相反的正確?最後,這對於缺失文件是強大的? – user788171 2013-03-06 14:44:21
分別爲否。 – 2013-03-06 15:01:19
爲了詳細說明,它將當前目錄的權限複製到版本1,並且如果目標目錄中沒有匹配的文件,我不確定是否會繼續執行'xargs' - 您應該在運行FS之前進行測試。 – 2013-03-06 15:41:01
chmod owner-group-other ./dir或./file可能嗎?
除非權限很好,並且從一個文件到另一個文件不同,您可以對目錄執行遞歸chmod並統一權限。
見人CHMOD的,可能是
你可以使用這個腳本(它改變的權限遞歸,但單獨爲每個文件/目錄)
#!/bin/sh
chmod --reference $1 $2
if [ -d $1 ]
then
if [ "x`ls $1`" != "x" ]
then
for f in `ls $1`
do
$0 $1/$f $2/$f
done
fi
fi
運行腳本有用的選項引用參數版本2版本1
我在與此主題相關的ServerFault中創建了一個新問題:[複製文件權限,但不是Unix中的文件](http://serverfault.com/questions/665237/copy-file-permissions-but- not-files-in-unix) – 2015-02-05 12:25:48