我需要一个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
表示最后一个字段