gpt4 book ai didi

linux - Unix shell 脚本 : Update timestamp on all sub-directories and sub-files, 包括带空格的脚本

转载 作者:太空狗 更新时间:2023-10-29 11:23:46 25 4
gpt4 key购买 nike

这就是我要实现的目标。

我有一个包含超过 4200 个子文件/子目录的目录,所有这些都需要设置为某个时间戳。

这是一个问题,因为它们中的许多都有空格和其他奇怪的字符。

我尝试的第一件事:

touch $(find .)

由于空格,将无法工作。它将更新所有无空间文件和目录的时间戳,但那些没有空间的文件和目录不会收到新的时间戳。此外,正如人们所预料的那样,它会在根目录中创建与带空格的文件名元素相对应的文件。因此,如果我在某处有一个名为“一二三”的文件,“触摸”会在根目录中创建 3 个文件,“一”、“二”和“三”。这本身可以通过将 -c 与“touch”一起使用来解决,但当然它仍然不会更新带有空格名称的文件。

我尝试的第二件事是:

for FILENAME in $(find .); do touch -t 201007162310.00 "$FILENAME"; done

但这是同一个故事。

我在网上找到了一些结果,但它们都试图以不同的方式实现某些目标,因此建议了一些对我不起作用的方法。

所以现在我迷路了。有什么想法吗?

是否真的不可能让“查找”命令在每一行前面加上引号或其他内容?

编辑:这需要通过 shell 脚本完成。使用 Perl、PHP 或任何其他环境都无济于事。除了 Unix shell 脚本之外,我可以使用任何其他工具轻松地做到这一点,但它必须在 Unix shell 脚本中,最好不要大。

最佳答案

find . -exec touch -t 201007162310.00 {} +

这是执行您想要的操作的最简单和最可靠的方法。

关于linux - Unix shell 脚本 : Update timestamp on all sub-directories and sub-files, 包括带空格的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3718645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com