将非顺序文件移动到新目录

时间:2018-06-22 19:56:24

标签: linux bash redhat

我以前没有编程经验。我知道这个问题之前曾有人提出过,或者答案已经存在,但我一生都找不到。我已经在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)将所选文件从列表移到新目录,以便我可以按顺序重命名它们,然后运行序号命令?

谢谢。

1 个答案:

答案 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