0

我目前拥有的是

cd /some/other/location
file_needed=$(ls -Altr `find -name "amey*1*" -print` | tail -1 | awk '{print $9}')
file_needed=${file_needed:2}
cp /some/other/location/${file_needed} .
yum -y install ${file_needed}

但我确信我有很多不必要的代码行,而且可以用更简洁的方式编写。

有什么建议么?

4

3 回答 3

1

您的前 2 行绝对可以极大地重构为如下内容:

find . -name "amey*1*" -exec stat -c "%Y %n" '{}' + | awk '{if ($1>cnt) {cnt=$1;f=$2}}
   END {print substr(f,3)}'

所以整个脚本可以变成:

file_needed=$(find /some/other/location -name "amey*1*" -exec stat -c "%Y %n" '{}' + | \
  awk '{if ($1>cnt) {cnt=$1;f=$2}} END {print substr(f,3)}')
cp /some/other/location/${file_needed} .
yum -y install ${file_needed}
于 2013-06-26T19:19:33.050 回答
1

也许是这样的:

cp "$(ls -1tr /some/other/location/amey*1* | tail -1)" .

如果通配符匹配太多文件并导致失败,那么这个替代方案应该可以工作:

cp "$(ls -1tr /some/other/location | grep -E '^amey.*1' | tail -1)" .
于 2013-06-26T19:36:12.537 回答
0

这个怎么样:

file_needed=$(find /some/other/location -maxdepth 1 -printf '%T@ %p\n' | sort -nr | head -1 | cut -c '23-')
cp "$file_needed" .
yum -y install "$file_needed"
于 2013-06-26T19:00:18.547 回答