我在该格式的目录中有大量文件*/*/*/*/*.txt
,我想将它们复制到不同的位置,同时用下划线替换路径中的正斜杠。例如,如果一个文件位于A/B/C/D/E.txt
,我想将其复制到 ,dest/
以便复制后其路径为dest/A_B_C_D_E.txt
。这可能吗?
答案1
您可以使用这样的脚本:
for i in `find . -type f -name "*.txt"`
do
newfile=$(echo $i|sed -s 's@/@_@g'|cut -c -3)
mv "$i" "dest/$newfile"
done
如果文件数量非常大,您可以尝试while
使用for
while read i
do
newfile=$(echo $i|sed -s 's@/@_@g'|cut -c -3)
mv "$i" "dest/$newfile"
done < (find . -type f -name "*.txt")
PS 请注意文件名中包含非标准符号的文件名/目录。供参考检查这个问题和答案