我有一个包含如下文件名的文件:
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
如果您希望实际移动发生,请在带有
mv
的行中进行评论。
或者,不太聪明,但还有另一种方法。
就我而言,将 MP4 文件名重命名为 SRT 文件名:
ls *.srt > SRT.txt
ls *.mp4 > MP4.txt
paste -d ';' SRT.txt MP4.txt > SM.txt
while read -r line; do
mv "$(echo $line | cut -f 2 -d ';')" "$(echo $line | cut -f 1 -d ';' | sed -r 's/.srt/.mp4/')"
done < SM.txt