我刚刚从 Ubuntu 8.04 升级到 9.04,添加了一个额外的硬盘,/home
并使用 iPod(遗憾的是 FAT32)来保存/传输文件。
复制这些文件时,我发现大多数文件(我想这是由于 FAT32 上的权限未设置或设置不当的问题)现在chmod +x
在某个时候已经被有效地修改了。
我想知道是否有一种简单的方法可以找到特定类型的所有文件(例如.txt
或.css
)并将其直接传输到chmod -x
?我尝试在这个网站和其他几个网站上使用各种短语进行搜索,但找不到任何东西。不过我猜这可能是词汇问题。
感谢你们所提供的帮助以及你们的时间。
答案1
chmod -R a-x *.txt
就是一个例子,但你必须对所有不同的文件模式重复它。
答案2
命令行还可以使用正则表达式类型的语法,因此您只需执行一次命令。
cd /to/my/directory
chmod -R a-x *.(txt|css|whatever)
好的,我尝试测试它,但它并没有完全发挥作用,我正在寻找正确的语法,但我知道它是可能的。谢谢。
同时..
这绝对有效(并且绝对是小题大做):
find /to/my/directory -type f | egrep "(txt|css)$" | xargs -t -i{} chmod a-x {}
解释:
该find
命令将列出所有文件、链接和目录,每行一个。路径名指定起点。选项-type f
指定仅查找文件。
该egrep
命令将输出与正则表达式匹配的每一行。"(txt|css)$"
正则表达式表示将以 ($) 结尾的每个文件与 txt 或 css 匹配。
该xargs
命令将获取一个命令的输出并将其导入到另一个命令(其之后的命令)的输入中。例如:
$> echo a\nb\nc
a
b
c
$> echo a\nb\n\c | xargs echo
a b c
所以通常情况下,你可以这样做, find -type f | xargs echo
但是如果你有很多文件,输出有时会变得很长,所以我觉得最好把它分解一下。所以。-i 选项对每一行输出执行命令,每行的值存储在一个变量中,我定义为 {}。-t 命令将生成的每个命令输出到标准输出,这样你就可以看到发生了什么。
答案3
作为您实际问题的答案,find | xargs 解决方案是正确的。
但是,要解决您的根本问题,没有引用就无法正确恢复所有文件权限。如果您有空间,您可以创建一个虚拟机,安装与真实机器相同的所有软件包(要了解如何操作,请搜索 dpkg get set selectings),然后使用 chmod 的 --reference 选项“复制”权限。
如果您决定采用这条路线,我可以编辑我的帖子并提供更详细的说明。
答案4
啊,发现你应该使用 tar 来备份/恢复。:(
find . -type f -name '*.txt' -exec chmod -x {} +
或者使用您想要的任何其他选择器,例如
find -regextype posix-extended . -type f -iregex '.*\.(txt|css|html)' -exec chmod -x {} +
实际上,主目录中几乎任何东西都不应可执行,因此我会从find -type f
(不带 -name)开始,然后根据需要使内容可执行。也许 chmod 为模式 664,如果你最终将所有内容设置为模式 777,因为你不希望文件(或目录)具有全局写入权限。因此实际上,chmod ow -R ~ 是一个好主意。
某些文件不应被同一台计算机上的其他用户读取,例如 ~/.bash_history、~/.ssh、~/Mail 等(基于我的主目录中可能确实重要的内容)
光盘 chmod 600 .bash_history .esd_auth .githistory .ICEauthority .lesshst .mcoprc .netrc* .pulse-cookie .recently-used* .viminfo .Xauthority .xsession-errors chmod 700 .dbus .gconf* .gnome* .gnupg .icedteaplugin .kde .macromedia .metacity 邮件 .mozilla .openoffice.org* .pulse .purple .Skype .ssh .thumbnails .tsclient .update-notifier chmod 2700 .gnupg # 我猜是超级偏执狂。 chmod 500 .gvfs # gvfs 很奇怪,可能在当前的 ubuntu 上不存在?
将其复制/粘贴到终端中。不要担心错误,我敢肯定您没有和我一样的所有点文件和目录。(我省略了很多晦涩难懂的目录,它们实际上只是游戏保存目录,可以公开阅读而不会造成伤害。)通常,如果您不希望您的 pr0n 存储或任何提及它的内容出现在其他用户的定位结果或其他搜索中,请确保您的历史文件等是私密的。