在文本文件的每一行的最后一个"/"之后打印的"awk"方法



我需要一个awk方法来在文本文件的每一行的最后一个/之后打印。我有一个包含文件目录的txt文件。

~/2500andMore.txt文件

/Volumes/MCU/_ 0 _ Mt Cabins Ut/Raw/Log Cabin on The Stream/DJI_0003.JPG
/Volumes/MCU/_ 0 _ Mt Cabins Ut/Raw/DJI_0022.jpg
/Volumes/MCU/_ 0 _ Mt Cabins Ut/PTMAD/Insta/RAW/IMG_1049.jpg

其想法是将所有位于一个目录中的文件复制回给定的示例。我正计划做这样的事情来把它们复制回来:

awk '{print <after the last '/' of the line>}' ~/2500andMore.txt > ~/filename.txt
cd file-directory
while IFS= read -r file && IFS= read -r all <&3; do cp $file $all; done <~/filename.txt 3<~/2500andMore.txt

根据您的示例判断,您不需要将文件名放入单独的文件中,只需更改while循环:

while IFS= read -r all; do
file=${all##*/}            # Or file=$(basename "$all")
cp "$file" "$all"
done <~/2500andMore.txt

但是,如果您真的想要filename.txt中的文件名,那么使用:

awk -F / '{ print $NF }' ~/2500andMore.txt > ~/filename.txt

说明:"/"用作分隔符,$NF表示最后一个字段

相关内容

  • 没有找到相关文章

最新更新