【发布时间】:2022-01-08 17:16:17
【问题描述】:
我正在尝试在 bash 中执行“cd”命令以导航到创建的最新文件夹。我目前实施的方法太啰嗦了。我想知道我是否能够只用一行代码来实现这一点。
如果创建新文件夹,“4122536”将动态更改。
“RLM Reporting File Sample”文件夹也将被动态创建。
例如
目标目录路径:/opt/tableau/tableau_rlm/deployment/4122536/ApplicationPackage/RLM Reporting File Sample/
我为在 bash 中到达目标路径而实施的当前方法
RLM_BASE_PATH=/opt/tableau/tableau_rlm/deployment
## Navigate to the latest folder
cd $RLM_BASE_PATH
## This will navigate to 4122536 folder
cd "$(\ls -1dt ./*/ | head -n 1)"
## Navigate to ApplicationPackage
cd ApplicationPackage
##Navigate to RLM Reporting File Sample Folder
cd "$(\ls -1dt ./*/ | head -n 1)"
##set pwd variable to rewritable permission
RLM_REPORTING_PATH="$(pwd)"
echo $RLM_REPORTING_PATH
chmod -R 777 $RLM_REPORTING_PATH/*
我已经尝试实现以下脚本
## Script 1: Worked only to navigate till the latest folder which is 4122536
cd /home/mm13854/shtest/"$(\ls -1dt ./*/ | head -n 1)"
## As soon i tried adding /application/... , it Will return Error on directory not found
cd /opt/tableau/tableau_rlm/deployment/"$(\ls -1dt ./*/ | head -n 1)/ApplicationPackage/"$(\ls -1dt ./*/ | head -n 1)/
【问题讨论】:
-
最新目录创建还是修改?可能无法找到创建时间,因为文件系统通常不存储它。因此,请尝试考虑其他标准,例如唯一没有
ApplicationPackage或类似的目录 -
就像 Fravadona 说的:至少在 Unix 下不行。也许使用 BSD(macos 等)或 Windows,您将有机会。如果您按照修改日期对它进行排序,就像您正在做的那样,如果目录中的文件已被添加或删除,或者发生 inode 更改,则不会更新修改日期。