午夜指挥官上传/复制排除

午夜指挥官上传/复制排除

我的问题类似于这个,但我想在复制/上传文件时递归地排除一些目录。具体来说,我想从我上传的整个代码库中排除 .git 文件夹(它包含子存储库,一些子存储库的结构相当深)

我可以使用“-”键并取消选择 .git 对当前目录执行此操作,但有没有办法以递归方式执行此操作?

答案1

Midnight Commander 对子目录操作没有那种控制权。有点像“全有或全无”类型的交易。就像你说的,你可以控制顶级条目,但仅此而已。

我想您可以编写某种脚本以在 F2 菜单中使用它......

另一种方法,有点笨拙,但可以起作用......

find . -type d -name ".git" -exec chmod 000 "{}" \;

这会导致所有 .git 子目录无法读取,MC 会弹出一个错误对话框,告诉它“继续”并继续处理。

然后:

find . -type d -name ".git" -exec chmod 750 "{}" \;

恢复所需的权限。(我自己使用 750 和 640,许多人更喜欢 755 和 644... 使用你喜欢的任何值代替那里的“750”)

哈!与我的“将其放入 F2 菜单”想法相结合...您可以将这两个命令放入 F2 菜单中...使这几乎(几乎!)变得无痛。


编辑:

按要求:

#
# Restore permissions for any .git subdirectories to 755
g   Restore .git directories to 755 permissions
    if [ "x$PWD" = "x$HOME" ]; then
        exit
    fi
    find . -type d -name ".git" -exec chmod 755 "{}" \; 2>/dev/null
#
# Remove permissions for any .git subdirectories
G   Hide .git directories with 000 permissions
    if [ "x$PWD" = "x$HOME" ]; then
        exit
    fi
    find . -type d -name ".git" -exec chmod 000 "{}" \; 2>/dev/null
#

将其保存到文件'~/.config/mc/菜单

如果此文件已经存在,则将其附加到末尾(某些内容必须放在文件的开头,不要弄乱它)。

如果此文件不存在,则此处的条目将替换通常可见的所有默认 F2/User 菜单条目。如果您需要这些菜单条目(有些很方便!),那么寻找文件名为菜单(通常发现于/etc/mc/),将其复制到~/.config/mc/菜单,再次将上述内容附加到末尾。结束!

如果你使用的是旧版本的麦克,你可能需要搜索菜单文件,以及菜单文件需要位于~/.mc.菜单……是的,有点复杂。但最近,麦克修改了配置文件位置以反映最佳实践(XDG 建议),并将所有内容移至〜/ .config / mc /。mc(1) 手册页非常有用,搜索用户菜单

这将添加两个命令:

g (lowercase g)  which will RESTORE the 755 permissions for any .git subdirs
G (uppercase g)  which will REMOVE the permissions (set to 000) from any .git subdirs

我添加了一个测试来防止在你的 $HOME 中执行此操作,尽管这不会造成破坏......只是不适合在那里执行此操作。

享受!

相关内容