Один портативный, простой способ не является стандартной утилитой - вам нужно вызвать stat () для файла шаблона, а затем chmod () для файла (ов) назначения. Это означает использование языка, подобного C, или другого широко используемого языка, такого как perl.
Права доступа к файлу указываются в элементе struct stat st_mode с помощью 0007777 битов. Решение Денниса правильное, если оно немного тяжелое для ввода-вывода, поэтому для действительно больших файлов оно может дать сбой:
cp has template
Рассмотрим пример, не готовый к производству:
#include <sys/types.h> #include <sys/stat.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <errno.h> mode_t getperm(const char *template_file) { struct stat st; if(stat(template_file, &st)==-1) { perror("Cannot stat file"); exit(1); } return st.st_mode; } int main(int argc, char **argv) { mode_t mode=getperm(argv[1]); int i=0; for(i=2; argv[i]!=NULL; i++) { if(chmod(argv[i], mode)==-1) fprintf(stderr, "Permissions failed on %s:\n\t%s\n", argv[i], strerror(errno)); } return 0; }