我有一堆使用约定 prefix.suffix 命名的目录。 前缀是数字,后缀是任意长度的字母数字。
mkdir 123.abcdef
前缀始终是唯一的,但我并不总是知道后缀在bash
脚本运行时是什么。
在我的脚本中,如何通过仅知道前缀来bash
写入给定目录?
以下不起作用但我尝试过:
echo "itworks" > 123*/results.text
答案 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 \;
应该这样做。