2

我有一组嵌套的目录,看起来像2013/10/08/access.log.xz,我可以找到我想要的所有日志文件find . -name \*access.log.xz。我想将它们全部放在一个以日期为前缀的目录中,例如20131008_access.log.xz. 我什至不知道从哪里开始。有什么建议么?

4

1 回答 1

3

如果你有一个最近的 bash 或一个带有递归 globbing 的 shell,你可以这样做:

shopt -s globstar
for logfile in **/*access.log.xz; do
  IFS=/ read year month day file <<< "$logfile"
  mv "$logfile" "${year}${month}${day}_${file}"
done

如果您有较旧的 bash,则可以模拟效果,但更难阅读:

find . -name '*access.log.xz' -exec bash -c 'for logfile; do
    IFS=/ read dot year month day file <<< "$logfile"
    mv "$logfile" "${year}${month}${day}_${file}"
done' _ {} +
于 2013-10-08T17:37:17.670 回答