По вашему вопросу я не могу сказать, где в именах файлов могут быть символы новой строки, поэтому я предполагаю, что они могут быть где угодно. Это делает сопоставление более сложным.
Самое простое решение может состоять в том, чтобы удалить все символы новой строки из ввода перед удалением нежелательных имен файлов.
Я сделал этот скрипт:
#!/usr/bin/perl                                                                                                                                            
$filename = "filelist.txt";                                                                                                                                
open(FILE, $filename) or die "Cant open $filename\n";                                                                                                      
# Undefine the record separator, so that the entire file will be read into a single string
# instead of an array with records separated by newlines
local $/ = undef;                                                                                                                                          
$lines = <FILE>;                                                                                                                                           
close(FILE);                                                                                                                                               
print "Before\n------\n";                                                                                                                                  
print $lines;                                                                                                                                              
# Remove all newlines                                                       
$lines =~ s/\n+//g;                                                                                                                                        
# Remove all "textClipping" files
$lines =~ s/\/Volumes\/[^ ]*.textClipping//g;                                                                                                              
# Turn multiple consecutive spaces into single spaces
$lines =~ s/ +/ /g;                                                                                                                                        
print "After\n-----\n";                                                                                                                                    
print "$lines\n";     
и скормил свой пример как filelist.txt:
/Volumes/folder/folder/file.doc /Volumes/folder/folder/file.textClipping /Volumes/folder/folder/file.doc /Volumes/folder/folder/file.textClipping /Volumes/folder/folder/fi
le.textClipping /Volumes/folder/folder/file.doc
который дал этот вывод:
Before
------
/Volumes/folder/folder/file.doc /Volumes/folder/folder/file.textClipping /Volumes/folder/folder/file.doc /Volumes/folder/folder/file.textClipping /Volumes/folder/folder/fi
le.textClipping /Volumes/folder/folder/file.doc
After
-----
/Volumes/folder/folder/file.doc /Volumes/folder/folder/file.doc /Volumes/folder/folder/file.doc
Наконец, я думаю, что вы должны быть очень осторожны, используя шаблон, который вы предлагаете в своем вопросе:
/Volumes/.*.textClipping
поскольку . захватит любой символ, кроме новой строки, но включая пробел. Я запустил этот шаблон на этом входе, как подсказывает ваш вопрос:
/Volumes/folder/folder/file.doc /Volumes/folder/folder/file.textClipping /Volumes/folder/folder/file.doc /Volumes/folder/folder/file.textClipping /Volumes/folder/folder/fi
le.textClipping /Volumes/folder/folder/file.doc
и получил этот вывод, который я не думаю, что вы хотите:
/Volumes/folder/folder/fi
le.textClipping /Volumes/folder/folder/file.doc
Изменить: вы недавно опубликовали ответ на свой вопрос, где вы снова попали в эту ловушку, но у меня недостаточно репутации, чтобы оставить комментарий. Вместо /Volumes/.*\n*.textClipping/g (который будет соответствовать пробелам и, таким образом, потенциально избавится от более чем одного имени файла за раз), я настоятельно рекомендую рассмотреть /Volumes/[^ ]*\n*.textClipping/g ; [^ ]* будет соответствовать всему, кроме пробелов.