相关疑难解决方法(0)

为什么循环查找的输出是不好的做法?

这个问题的灵感来自

为什么使用 shell 循环处理文本被认为是不好的做法?

我看到这些结构

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什么?

find filenames files for

193
推荐指数
4
解决办法
3万
查看次数

了解 `find` 的 -exec 选项

我发现自己不断地查找语法

find . -name "FILENAME"  -exec rm {} \;
Run Code Online (Sandbox Code Playgroud)

主要是因为我不明白这-exec部分是如何工作的。大括号、反斜杠和分号的含义是什么?该语法还有其他用例吗?

shell find

116
推荐指数
1
解决办法
8万
查看次数

如何在 debian 中规避“打开的文件太多”

如果我想一次查看我的 apache2 服务器的所有相关日志文件,我使用

tail -f /var/kunden/logs/*log /var/kunden/logs/*log /var/log/apache2/*log |grep -v robots|grep -v favicon
Run Code Online (Sandbox Code Playgroud)

但由于现在这些文件太多,我想增加这个限制。

如何为一个 ssh 会话增加它?我怎样才能在全球范围内增加它?

我可以看到我的机器上的打开文件限制是 1024:

ulimit -n
1024
Run Code Online (Sandbox Code Playgroud)

debian file-descriptors limit files ulimit

8
推荐指数
1
解决办法
2万
查看次数

测试带有斜杠的链接?

我在 /tmp/test/

mkdir somedir
ln -s somedir/ somelink
Run Code Online (Sandbox Code Playgroud)

我只想遍历目录

for file in */ ; do 
  if [[ -d "$file" && ! -L "$file" ]]; then
    echo "$file is a directory";
  fi;
done
Run Code Online (Sandbox Code Playgroud)

但为什么会这样somelink is a directory

而没有斜线它doesent?

for file in * ; do 
...
Run Code Online (Sandbox Code Playgroud)

和 zsh 有区别吗?

shell directory slash symlink filenames

4
推荐指数
1
解决办法
717
查看次数

标签 统计

filenames ×2

files ×2

find ×2

shell ×2

debian ×1

directory ×1

file-descriptors ×1

for ×1

limit ×1

slash ×1

symlink ×1

ulimit ×1