Permissions
如何一步複製文件和更改目標文件權限?
我正在編寫一個 shell 腳本來完成一些複雜的任務,這些任務本質上是重複的。為了簡化問題陳述,我複雜任務的最後一步是將文件從特定路徑(基於某些複雜步驟找到)複製到預定義的目標路徑。並且被複製的文件將具有 600 的權限。我希望將其更改為 644。
我正在尋找一個選項,我可以在其中指示系統複製該文件並在一個命令中全部更改權限。就像是 -
cp -<some_flag> 644 <source_path> <destination_path>
您可能會說,我可以通過兩步過程複製文件後更改文件的權限。但是,這也有問題。原因是,源路徑是作為另一個命令的輸出獲得的。所以我得到了文件的絕對路徑,而不僅僅是文件名來編寫我的腳本以
chmod
使用名稱呼叫。我的命令最後一段看起來像 -
...| xargs -I {} cp {} /my/destination/path/
chmod
所以我不知道複製後要呼叫的文件的名稱
只需
chmod
在您的xargs
通話中包含:...| xargs sh -c 'for file; do cp -- "$file" /my/destination/path/ && chmod 700 /my/destination/path/"$file"; done' sh
有關使用的特定格式的更多資訊,請參閱https://unix.stackexchange.com/a/156010/22222。
請注意,如果您的輸入
xargs
是完整路徑而不是本地目錄中的文件名,您將需要使用${file##*/}
僅獲取文件名:...| xargs sh -c 'for file; do cp -- "$file" /my/destination/path/ && chmod 700 /my/destination/path/"${file##*/}"; done' sh