shell 获取文件夹下所有子文件夹下所有文件的名称 如果子文件夹以anim开头,则生成的字符串规则为: 开头:<path value="com.youxiang.soyoungapp.R.anim. 中间:文件名称 结尾:" /> 如果子文件夹以drawable开头,则生成的字符串规则为: 开头:<path value="com.youxiang.soyoungapp.R.drawable. 中间:文件名称 结尾:" /> 如果子文件夹以layout开头,则生成的字符串规则为: 开头:<path value="com.youxiang.soyoungapp.R.layout. 中间:文件名称 结尾:" /> 如果子文件夹以mipmap开头,则生成的字符串规则为: 开头:<path value="com.youxiang.soyoungapp.R.mipmap. 中间:文件名称 结尾:" /> 如果子文件夹以values开头,并且文件名为dimens.xml,则生成的字符串规则为: 开头:<path value="com.youxiang.soyoungapp.R.dimen. 中间:获取dimens.xml中name对应的value 结尾:" /> 每生成一个字符串,换行再生成下一个字符串 以上字符串聚合去重保存一个txt中
时间: 2024-03-11 10:51:37 浏览: 80
shell获取目录下所有文件夹的名称并输出的实例
你可以使用以下的Shell脚本来完成这个任务:
```shell
#!/bin/bash
# 设置需要搜索的文件夹路径
dir_path="/path/to/folder"
# 遍历文件夹及其子文件夹下的所有文件
for file_path in $(find "$dir_path" -type f); do
# 获取文件名和所在文件夹的名称
file_name=$(basename "$file_path")
dir_name=$(basename "$(dirname "$file_path")")
# 根据文件夹名称生成字符串
if [[ "$dir_name" == "anim"* ]]; then
string="<path value=\"com.youxiang.soyoungapp.R.anim.$file_name\" />"
elif [[ "$dir_name" == "drawable"* ]]; then
string="<path value=\"com.youxiang.soyoungapp.R.drawable.$file_name\" />"
elif [[ "$dir_name" == "layout"* ]]; then
string="<path value=\"com.youxiang.soyoungapp.R.layout.$file_name\" />"
elif [[ "$dir_name" == "mipmap"* ]]; then
string="<path value=\"com.youxiang.soyoungapp.R.mipmap.$file_name\" />"
elif [[ "$dir_name" == "values"* ]] && [[ "$file_name" == "dimens.xml" ]]; then
# 从dimens.xml中提取name和value
while read -r line; do
if [[ $line =~ ^[[:space:]]*<dimen[[:space:]]+name=\"([^"]+)\"[[:space:]]+[^>]*>(.*)</dimen> ]]; then
dimen_name="${BASH_REMATCH[1]}"
dimen_value="${BASH_REMATCH[2]}"
string="<path value=\"com.youxiang.soyoungapp.R.dimen.$dimen_name\">$dimen_value</path>"
break
fi
done < "$file_path"
else
# 跳过其他文件夹和未知文件
continue
fi
# 将字符串添加到结果中
result+="$string\n"
done
# 对结果去重并保存到文件
echo -e "$result" | sort -u > output.txt
```
你只需要将其中的`/path/to/folder`替换成你的文件夹路径,运行该脚本即可生成一个名为`output.txt`的文件,其中包含了所有符合要求的字符串,并且已经去重。
阅读全文