bash在目录中创建文件,只知道目录名的一部分

时间:2016-06-22 15:37:59

标签: bash automation directory glob

我有一堆使用约定 prefix.suffix 命名的目录。 前缀是数字,后缀是任意长度的字母数字。
mkdir 123.abcdef

前缀始终是唯一的,但我并不总是知道后缀bash脚本运行时是什么。 在我的脚本中,如何通过仅知道前缀bash写入给定目录?
以下不起作用但我尝试过:
echo "itworks" > 123*/results.text

3 个答案:

答案 0 :(得分:3)

Glob目录部分循环播放:

shopt -s nullglob

for dir in 123*/; do
    echo "itworks" > "${dir}results.text"
done

您还可以强制检查是否存在匹配的唯一目录:

shopt -s nullglob

dirs=( 123*/ )
if (( ${#dirs[@]} == 0 )); then
    echo >&2 "No dirs found!"
    exit 1
elif (( ${#dirs[@]} > 1 )); then
    echo >&2 "More than one dir found!"
    exit 1
fi

# Here you're good
echo "itworks" > "${dirs[0]}results.txt"

答案 1 :(得分:0)

您可以使用'ls -d'

强制使用通配符评估目录名称
echo "itworks" > $(ls -d 123*)/results.txt

答案 2 :(得分:0)

prefix='yourprefix' && find . -maxdepth 1 -type d -name "$prefix*" \
-exec echo "Hello" {}/results.txt \;

应该这样做。