因此,我的音乐收藏保存在 12.04.2 服务器上。这些年来,这个收藏一直陪伴着我从 Windows 机器转移到 MacBook Pro,最后转移到现在的服务器上。
我注意到,出于某种原因,我的所有“folder.jpg”(封面照片)在终端上都以绿色突出显示(表示它们是可执行的)。如果我运行chmod -x folder.jpg
终端,它们将以浅紫色显示(表示某种形式的媒体文件)。现在我并不担心颜色本身,但我有两个问题。a) 为什么我的 .jpg 被赋予可执行位?(我敢肯定,可能是因为 Windows 搞砸了它们),b) 我如何chmod -x *.jpg
从音乐层次结构的顶部递归运行?
chmod -R -x *.jpg
当我从顶层尝试时,我得到:
mediausr@MediaSRV:/space/music$ chmod -R -x *.jpg
chmod: cannot access `*.jpg': No such file or directory
附加问题:所有文件夹都以“其他可写”颜色显示,而我创建的新文件夹则以“目录”颜色显示。我对此并不十分担心,因为它不涉及可执行文件,但你知道,如果有人能告诉我一种递归方法,让系统将它们视为直接目录,那就太棒了。:0)
感谢您的所有意见。
答案1
没有任何(好的)理由让图片可执行。
只需运行此命令即可修复它们:
find /space/music -name "*.jpg" -exec chmod -x {} +
奖金:
find /space/music -type d -exec chmod o-w {} +
解释:
命令行的大部分内容都是不言自明的。唯一需要一些理解的部分是结尾。{}
被替换为与过滤器匹配的文件(或目录)的名称。通常,find 命令以受保护的分号结尾\;
。
但是,这样做效率不高,因为每个文件/目录都要运行一次命令。
有一个众所周知的解决方法,即通过管道find
输出xargs
将文件名连接起来,直到达到允许的最大命令行,但是当路径包含空格时就会出现问题,这种情况在 Unix/Linux 世界中也越来越常见。
同样,基于 GNU 特定扩展的解决方法可以正确处理这些情况。我选择了一种更简单的方法,使用 POSIX(读取可移植)方式让 find 自行构建长命令行,即{}
由一组文件名替换,最多允许一个文件名。