重新评估每次运行的for循环条件

时间:2016-07-13 17:28:01

标签: bash shell unix for-loop

我有一个for循环列出目录中的文件,然后根据它们的名称将它们移动到各种适当的文件夹中。

假设有300个文件如下:

  1. Prefix_filename1_suffix1_date.txt - 100个文件
  2. Prefix_filename101_suffix2_date.txt - 150个文件
  3. Prefix_filename251_suffix3_date.txt - 50个文件
  4. 我只知道循环开头的文件的前缀和文件夹位置:

    cd folder_location
    for f in $(ls ${file_prefix}*); do
    

    进入for循环后,我知道文件名 - 这是一个挑战。

    我使用 regex 查找所有文件共有的后缀,然后使用awk获取前缀和后缀之间的文件名。所以要使用 regex awk我需要文件名来完成for循环。

    在处理这些文件时,我将所有类似的文件移到一起,所以(如果有三组文件),文件可能会在3次运行中移动(让我们说第1次,第101次和第251次),以及其他297次运行没有做任何事情,因为没有要处理的文件,因为它列出了300个文件 - 最初循环运行300次。

    我该如何避免这种情况?并使循环运行3次。

1 个答案:

答案 0 :(得分:0)

假设文件名在给定的位置只有那些下划线(不在前缀名称后缀中),只需{ {1}}第三个字段(即后缀)和cut,我们有三个后缀 es。将其传递给循环,并将匹配的文件sort -u发送到 ad hoc 子目录。

mv