这个问题的灵感来自
我看到这些结构
for file in `find . -type f -name ...`; do smth with ${file}; done
Run Code Online (Sandbox Code Playgroud)
和
for dir in $(find . -type d -name ...); do smth with ${dir}; done
Run Code Online (Sandbox Code Playgroud)
几乎每天都在这里使用,即使有些人花时间对这些帖子发表评论,解释为什么应该避免这种东西......
看到此类帖子的数量(以及有时这些评论被简单地忽略的事实)我想我还不如问一个问题:
为什么循环find的输出是不好的做法,为 返回的每个文件名/路径运行一个或多个命令的正确方法是find什么?
有ls没有办法显示否定条件,例如“所有不是符号链接的文件”?我在项目目录中经常使用后者,但其他否定也很有用。
目前,我的研究仅导致为“like”创建一个别名:
find . -maxdepth 1 ! -type l | sort # (...)
Run Code Online (Sandbox Code Playgroud)
但显然这种方式我没有得到 的着色ls,列格式等......
我有时使用 OS X 10.8.2 上的 Bash v3 和穿山甲上的 Bash v4。
LS_COLORS环境变量允许您为 GNU coreutil 的ls命令决定不同文件类型的颜色,例如目录、常规文件、链接等。我想点文件被认为是 Linux 文件类型的变体,而不是它自己的类型,因此有没有为它们指定显示颜色的选项。
是否有任何(其他)方法可以使ls列表以不同颜色显示隐藏文件?
我可以在LS_COLORS. 我不需要帮助自定义不同文件后缀的颜色。我想做的是根据它们的后缀为某些目录配置特殊颜色。
(例如,我想dir1/以标准目录颜色dir2.special-suffix/显示,但要以不同颜色显示,我为名称以.special-suffix.结尾的目录设置了这种颜色。)
我尝试使用标准*.«suffix»方法(与文件一起使用)来做到这一点,但没有运气。所有目录都以为 指定的颜色显示di,并忽略任何后续*.«suffix»规则。
这甚至可能吗?
假设我有一个目录/,它包含许多目录/mydir、/hisdir、/herdir,并且每个目录都需要具有相似的结构。
对于 中的每个目录/,都需要一个目录doc和一个文件doc1.txt。
人们可能天真地认为他们可以执行
mkdir */doc
touch */doc/doc1.txt
Run Code Online (Sandbox Code Playgroud)
但它们是错误的,因为通配符不是这样工作的。
有没有办法做到这一点,而无需在示例中制作一次结构然后将cp其传递给其他人?
而且,如果没有,有没有办法在不覆盖任何现有文件的情况下执行上述解决方法(假设mydir已经包含具有我想保留的一些数据的结构)?
编辑:如果可能,我也想避免使用脚本。