以下是我想要实现的目标。
我有一个包含4200多个子文件/子目录的目录,所有这些文件/目录都需要设置为特定的时间戳。
这是一个问题,因为其中许多文件名包含空格和其他奇怪字符。
我尝试的第一件事:
touch $(find .)
由于存在空格,该方法无法奏效。它会更新所有没有空格的文件和目录的时间戳,但没有空格的文件不会接收新的时间戳。此外,正如人们所预料的那样,它会在根目录中创建与带有空格文件名元素相对应的文件。因此,如果我在某个地方有一个名为“One Two Three”的文件,“touch”将在根目录中创建3个文件,“One”,“Two”和“Three”。使用“-c”可以解决这个问题,但当然它仍然无法更新具有空格名称的文件。
我尝试的第二件事是:
for FILENAME in $(find .); do touch -t 201007162310.00 "$FILENAME"; done
但是这个问题一直存在。
我在网上找到了几个结果,但它们都试图以不同的方式实现某些东西,因此提出的方法对我来说都行不通。
所以现在我很迷茫。有什么想法吗?
难道真的不能使“查找”命令在每行前面和后面添加引号或其他内容吗?
编辑:必须通过shell脚本完成。使用Perl、PHP或任何其他环境都无济于事。我可以轻松地用除Unix shell脚本之外的任何东西来完成这个任务,但它必须在Unix shell脚本中完成,最好不要太复杂。
find . -exec ...
中使用.
。 - Stephane Chazelasfind
命令(如Solaris)会在您的行上返回find: path-list predicate-list
错误。 - Stephane Chazelas