我有一个for
循环列出目录中的文件,然后根据它们的名称将它们移动到各种适当的文件夹中。
假设有300个文件如下:
我只知道循环开头的文件的前缀和文件夹位置:
cd folder_location
for f in $(ls ${file_prefix}*); do
进入for
循环后,我知道文件名 - 这是一个挑战。
我使用 regex 查找所有文件共有的后缀,然后使用awk
获取前缀和后缀之间的文件名。所以要使用 regex 和awk
我需要文件名来完成for
循环。
在处理这些文件时,我将所有类似的文件移到一起,所以(如果有三组文件),文件可能会在3次运行中移动(让我们说第1次,第101次和第251次),以及其他297次运行没有做任何事情,因为没有要处理的文件,因为它列出了300个文件 - 最初循环运行300次。
我该如何避免这种情况?并使循环运行3次。
答案 0 :(得分:0)
假设文件名在给定的位置只有那些下划线(不在前缀,名称或后缀中),只需{ {1}}第三个字段(即后缀)和cut
,我们有三个后缀 es。将其传递给循环,并将匹配的文件sort -u
发送到 ad hoc 子目录。
mv