我以前没有编程经验。我知道这个问题之前曾有人提出过,或者答案已经存在,但我一生都找不到。我已经在Google搜寻了几个小时,试图找出答案。我正在Red Hat Linux计算机上工作,它处于bash模式。
我在/ directory /中有一个目录0-500。
它们是这样命名的, / directory / filename_001,/ directory / filename_002,依此类推。
对研究进行分析后,我得到了感兴趣的数字的listofnumbers.txt(txt文件,每一行都是一个新数字)。例如,
015
124
187
345
412
A)从文件列表中运行命令从数字列表中运行文件?我们的代码如下:
g09slurm filename_001.com filename_001.log
有没有办法写这样的东西:
find value (row1 of listofnumbers.txt) then g09slurm filename_row1value.com filename_row1value.log
find value (row2 of listofnumbers.txt) then g09slurm filename_row2value.com filename_row2value.log
find value (row3 of listofnumbers.txt) then g09slurm filename_row3value.com filename_row2value.log
等等等
B)将所选文件从列表移到新目录,以便我可以按顺序重命名它们,然后运行序号命令?
谢谢。
答案 0 :(得分:0)
首先,将文件列表读入数组:
readarray myarray < /path/to/filename.txt
接下来,我们将基于这些数字获取所有文件名,并将其移动
cd /path/to/directory
mv -t /path/to/new_directory "${myarray[@]/#/filename_}"
此后...老实说,我很无聊。 Stack Overflow旨在帮助那些在问题上有一个良好开端的人,而您为解决这个问题所做的工作为零(除了编写“我保证我会尝试使用Google”)。
我什至都不明白
从文件列表中运行命令,从数字列表中运行文件
表示。
要顺序地重命名它们(一旦移动它们),您将需要根据以下代码进行操作:
for i in $(ls); do
*your stuff here*
done
您应该能够研究并找出问题所在。您可能需要做一些bash教程,here's a reasonable starting place