需要有关在路径 1 上运行的命令的帮助,以重命名文件并将文件从路径 2 移动到路径 3
认为
path1 = /data/run/
path2 = /data/output/
path3 = /data/archive/
路径 2 包含一些文件,例如“one.txt”、“two.txt”等...
我想在path1中运行一个命令,该命令可以将文件“one.txt”重命名为“archive_one.txt”并将它们移动到path3
我尝试了 '/data/run' 中的以下命令,但它将整个路径作为文件名并抛出错误。
$for FILENAME in /data/output/*.txt; do mv $FILENAME /data/archive/archive_$FILENAME; done
我怎样才能做到这一点。谢谢。
答案1
你想做的是
for FILENAME in /data/output/*.txt;
do
mv "$FILENAME" "/data/archive/archive_$(basename "$FILENAME")" ;
done
当然,这可以是一排的。
在哪里
basename "$FILENAME"
提取文件名的最后部分basename "$FILENAME" .txt
会做同样的条纹.txt
部分。
在这里发帖时,您应始终引用文件名。