我想在目录中找到最新的子目录,并将结果保存到bash中的变量中.
像这样的东西:
ls -t /backups | head -1 > $BACKUPDIR
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
Fem*_*ref 40
BACKUPDIR=$(ls -td /backups/*/ | head -1)
Run Code Online (Sandbox Code Playgroud)
$(...) 在子shell中计算语句并返回输出.
Mar*_*tin 18
只有一个简单的解决方案ls:
BACKUPDIR=$(ls -td /backups/*/ | head -1)
Run Code Online (Sandbox Code Playgroud)
-t 按时间排序(最新的第一个)-d 仅列出此文件夹中的项目*/ 只列出目录head -1 返回第一个项目*/直到我发现 在bash中使用ls列出目录时我才知道:检查.
这是一个纯 Bash 解决方案:
topdir=/backups
BACKUPDIR=
# Handle subdirectories beginning with '.', and empty $topdir
shopt -s dotglob nullglob
for file in "$topdir"/* ; do
[[ -L $file || ! -d $file ]] && continue
[[ -z $BACKUPDIR || $file -nt $BACKUPDIR ]] && BACKUPDIR=$file
done
printf 'BACKUPDIR=%q\n' "$BACKUPDIR"
Run Code Online (Sandbox Code Playgroud)
它跳过符号链接,包括指向目录的符号链接,这可能是也可能不是正确的做法。它跳过其他非目录。它处理名称包含任何字符的目录,包括换行符和前导点。