相关疑难解决方法(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万
查看次数

文件删除后如何更新目录大小?

这主要是理论问题,没有实际应用。

您可能知道,文件名存储在目录 inode 中。这意味着我们拥有的文件越多,文件名越长,目录使用的空间就越多。

不幸的是,如果从目录中删除文件,则目录使用的空间不会释放并且仍在使用。

$ mkdir test ; cd test
# next command will take a while ; for me it was about 6 minutes
$ for ((i=1;i<103045;i++)); do touch very_long_name_to_use_more_space_$i ; done
$ ls -lhd .
drwxr-xr-x 2 user user 8.6M Nov  9 22:36 .
$ find . -type f -delete
$ ls -l
total 0
$ ls -lhd .
drwxr-xr-x 2 user user 8.6M Nov  9 22:39 .
Run Code Online (Sandbox Code Playgroud)

为什么删除文件后目录使用的空间没有更新?有没有办法在不重新创建目录的情况下释放空间?

filesystems directory ext4

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

标签 统计

directory ×1

ext4 ×1

filenames ×1

files ×1

filesystems ×1

find ×1

for ×1