提问人:lemon chow 提问时间:5/16/2023 最后编辑:Bastienlemon chow 更新时间:5/16/2023 访问量:49
将文件重命名为 PATH 的串联
rename files to concatenation of path
问:
find "inputscan" -type f -exec sh -c 'file="$1"; folder=$(basename $(dirname "$file")); filename=$(basename "$file"); cp "$file" "$2/$folder"_"$filename"' sh {} "staging" \;
如果有五个文件,如下所示:input_scan
/inputscan
/folder1
/1.txt
/folder2
/2.txt
/folder3
/3.txt
4.txt
移动到暂存的文件名应如下所示:
inputscan_folder1_1.txt
inputscan_folder1_folder2_2.txt
inputscan_folder3_3.txt
inputscan_4.txt
目前,我正在使用上述命令。folder1_1.txt,folder2_2.txt,folder3_3.txt,inputscan_4.txt
答:
3赞
oguz ismail
5/16/2023
#1
您正在寻找类似这样的东西:
find inputscan -type f -exec bash -c '
for src; do
dest=staging/${src//\//_}
echo mv "$src" "$dest"
done' bash {} +
如果输出看起来不错,请删除。echo
0赞
Csabusr
5/16/2023
#2
尝试使用 realpath。 它显示整个文件路径。 从这些数据中,您可以轻松地剪掉不必要的部分并复制或移动文件。
$ realpath example.txt
/home/username/example.txt
评论
0赞
Bastien
5/16/2023
这并不能回答这个问题。请提供解决用户情况的解决方案,因为他们可能没有必要的知识来应用您提供的信息。
评论