gpt4 book ai didi

linux - 如何从目录中获取 linux bash 中的文件夹名称

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:37:03 26 4
gpt4 key购买 nike

将有一个目录,其中包含任意数量的文件夹并且可能是文件,我只需要选择一个随机文件夹并需要对其进行处理(移动文件夹等..)我需要一个接一个地处理文件夹。如果有文件需要忽略。

我厌倦了下面的代码能够获取文件夹名称但是,似乎有一些隐藏的字符或一些东西没有给出正确的输出。

PROCESSING_FOLDER_NAME= ls -l /ecom/bin/catalogUpload/input/TNF-EU/ | grep '^d' | cut -d ' ' -f23 | head -1

#PROCESSING_FOLDER_NAME= echo $PROCESSING_FOLDER_NAME | tr -d '\n\r'

#PROCESSING_FOLDER_NAME=${PROCESSING_FOLDER_NAME%$'\n'}

#echo "PROCESSING_FOLDER_NAME is/$PROCESSING_FOLDER_NAME "

echo "/ecom/bin/catalogUpload/input/TNF-EU/$PROCESSING_FOLDER_NAME/"

输出

Thanks_giving_Dec_08
/ecom/bin/catalogUpload/input/TNF-EU//

我期望输出应该是/ecom/bin/catalogUpload/input/TNF-EU/Thanks_giving_Dec_08/

这是我的 bash 版本。

GNU bash, version 4.2.50(1)-release (powerpc-ibm-aix6.1.2.0)

我主要需要变量中的文件夹名称(不是完整路径),因为正在处理的文件夹名称需要用于电子邮件通知其他人等。

最佳答案

要从文件夹列表中获取随机文件夹,首先将文件夹列表放在一个数组中:

list=(/ecom/bin/catalogUpload/input/TNF-EU/*/)

接下来,使用 shell 的 $RANDOM 变量获取随机索引,对列表的大小取模:

((index = RANDOM % ${#list[@]}))

打印所选索引处的值:

echo "${list[index]}"

要只获取目录名而不是完整路径,可以使用basename 命令:

basename "${list[index]}"

至于原脚本有什么问题:

  • 要将命令的结果存储在变量中,语法是 name=$(cmd) 而不是 name=cmd
  • 不要解析ls的输出,它不可靠
  • 要获取目录中的目录,您可以使用以 / 结尾的 * 之类的 glob 模式,如上例 */ 所示。

关于linux - 如何从目录中获取 linux bash 中的文件夹名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47736349/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com