gpt4 book ai didi

linux - 传递 shell 脚本变量以查找

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:58:31 27 4
gpt4 key购买 nike

我正在研究以递归方式重命名目录和目录中的文件。

alan/
alan_0001.txt
alan_0002.txt
andy/
andy_0001.txt
andy_0002.txt
andytwo/
andytwo_0001.txt
andytwo_0002.txt

我有一个制表符分隔的文件(希望在此处复制),它提供了文件名的新信息;例如

alan     123_123     Alan's Place
andy 124_010 Andy's Place
andytwo 125_001 Andy's Second Place

我已经编写了以下 shell 脚本,但我不确定如何从脚本的开头传递值以在结尾查找。

#!/bin/sh

FILE="sample-list.txt"

exec 3<&0
exec 0<$FILE

while read line
do
echo $line
oldName=`echo "$line" | cut -f1`
adminDB=`echo "$line" | cut -f2`
title=`echo "$line" | cut -f3`
echo "$oldName is old, his number is $adminDB, and the title is $title"
echo "renaming files"
# echo find -name '{$oldName}*'
echo "`find ./ -name '${oldName}*'`"
done
exec 0<&3

我想在 $oldName 上使用通配符以捕获 andy_0001、_0002 文件并使用 find ./-name ${oldName}* -exec rename $oldName 重命名它们$adminDB {}\;

提前致谢!

最佳答案

我认为你只需要使用双引号:

find ./ -name "${oldName}*" -exec rename $oldName $adminDB {} \;

您还可以通过让 shell 将输入行拆分为字段来节省一些代码:

while read oldName adminDB title; do
...
done

您会丢失整行中的原始空格,因此如果这很重要,请忽略此未经请求的建议。

关于linux - 传递 shell 脚本变量以查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12164573/

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