Você poderia fazer:
perl -0777 -ae '@files = m~(/Volumes/(?:[^/\r\n]+/)+?[^/]+?\.textClipping\R)~g;print scalar(@files)," files found:\n",@files' file.txt
Onde:
-
-0777
leu o arquivo no modo "slurp" -
-a
modo autosplit
Regex:
~ : regex delimiter
( : start group 1
/Volumes/ : literally
(?: : start non capture group
[^/\r\n]+ : 1 or more any character that is not a slash or line break
/ : slash
)+? : group repeated 1 or more times, not greedy (ie. the path)
[^/]+? : not a slash, 1 or more times, not greedy (ie. the filename)
\.textClipping : a dot with the extension
\R : any kind of linebreak
) : end group 1
~g : regex delimiter, global flag
Saída:
3 files found:
/Volumes/folder/folder/file.textClipping
/Volumes/folder/folder/file.textClipping
/Volumes/folder/folder/fi
le.textClipping
Se você quiser manter todos os arquivos que não terminam com .textClipping
perl -0777 -i.orig -ape 's~(/Volumes/(?:[^/\r\n]+/)+?[^/]+?\.textClipping\R)~~g' file.txt
O arquivo de entrada é modificado no local (opção -i
), o arquivo original é copiado com a extensão .orig
cat file.txt
/Volumes/folder/folder/file.doc
/Volumes/folder/folder/file.doc
/Volumes/folder/folder/file.doc