如何在bash中重命名列表中的文件?

如何在bash中重命名列表中的文件?,bash,rename,file-rename,Bash,Rename,File Rename,我有一个包含如下文件名的文件: my_cool_file.xxx my_cool_file2.xxx my_cool_file3.xxx 我有一个文件夹,其中包含: some_file.xxx some_file2.xxx some_file3.xxx 我希望有一个bash脚本从文件名文件中提取一行,并重命名文件夹中的一个文件 有什么方法可以做到这一点吗?注意:这个答案通常不是很好,但它解决了OP的问题。 是否所有文件都以_file.xxx或_fileN.xxx结尾 基本上,您想要更改的只是

我有一个包含如下文件名的文件:

my_cool_file.xxx
my_cool_file2.xxx
my_cool_file3.xxx
我有一个文件夹,其中包含:

some_file.xxx
some_file2.xxx
some_file3.xxx
我希望有一个bash脚本从文件名文件中提取一行,并重命名文件夹中的一个文件


有什么方法可以做到这一点吗?

注意:这个答案通常不是很好,但它解决了OP的问题。

是否所有文件都以_file.xxx或_fileN.xxx结尾

基本上,您想要更改的只是文件名的前缀吗

假设我正确地理解了您的问题,并且没有数字的文件是file_list.txt中的最后一个文件,那么下面应该可以解决这个问题


COUNTER=0
for FILE in `ls *.xxx | sort`; do
    COUNTER=$(($COUNTER+1))
    echo Moving $FILE to `sed -n ${COUNTER}p file_list.txt`
    #mv "${FILE}" `sed -n ${COUNTER}p file_list.txt`
done

计数器=0
对于'ls*.xxx | sort'中的文件;做
计数器=$($计数器+1))
echo将$FILE移动到`sed-n${COUNTER}p FILE_list.txt`
#mv“${FILE}”`sed-n${COUNTER}p FILE_list.txt`
完成

如果您希望实际移动发生,请在行中用
mv
注释。

是。没错。我想重命名的每个文件的末尾都会有一个数字,这样脚本就不必读取您的文件名列表了?文件集中的所有前缀都是相同的,是否要更改为相同的前缀?是否?抱歉-文件夹中的文件中的前缀是相同的。文件中的前缀不是。那么您如何知道要重命名哪个文件?在一个注释行中,我认为最好将文件放在引号中:“$file”-以防名称中有空格。您确实需要更好地进行规范。