我想要这个的主要原因是我大量使用dircolors
,尤其是ls --color=auto
.例如,每当.mp3
从 NTFS 复制文件时,它都会设置权限,umask 022
这在大多数现代发行版中应该是标准值。然而,对于音频文件来说,这是没有意义的:由于它们的权限设置为755
( rwxr-xr-x
),它们将获得与音频文件相同的颜色。可执行的 shell 脚本,虽然我真的很想为真正的可执行文件保留这种颜色。这是不是视窗;甚至和x
为所有者/组/其他设置的权限您不能指望在./track1.mp3
终端中工作,因此它会尝试选择默认的控制台播放器。
所以我想只umask
为声音的文件,即任何文件(如 .mp3、.wav、.ogg 等)始终将其模式设置为644
,而将所有其他文件复制到此位置的默认模式umask
为022
。
有什么办法可以做到这一点吗?
(注意:cp --preserve
也不会保留 NTFS 上的原始权限,因为 NTFS 对 *NIX 权限系统一无所知。)
答案1
您可以使用自己的用户定义命令的脚本cp
来检查文件扩展名并chmod
适当地使用...
你可以做一些简单的事情,比如:(使用 install 而不是 cp chmod 按照@fd0。无论如何,这更聪明。)
#!/bin/bash
args=("$@")
dest="${args[@]:(-1)}"
unset args[${#args[@]}-1]
if [ ! -d "$dest" ]; then
echo "Please specify a destination directory as the final argument."
exit 1
fi
for file in "${args[@]}"; do
if [ "$file" == *".mp3" ] || [ "$file" == *".wav" ] || [ "$file" == *".ogg" ]; then
install -m644 "$file" "$dest"
else
install -m755 "$file" "$dest"
fi
done
exit 0
答案2
我会使用安装工具从 NTFS 复制。
install -m644 file1 ... fileN destination_directory