Use um loop while:
while IFS= read -r l; do
mv -v -- "$l" "${l%/*/*/*}/"
done <file
-
while IFS= read -r l
lerá ofile
linha por linha. -
mv -v
move os arquivos e-v
informamv
para ser detalhado-
"$l"
é o nome do arquivo de origem -
"${l%/*/*/*}/"
é o diretório de destino. Ele remove 3 barras e o que está entre elas (/*/*/*
) do backend do nome do arquivo.
-
Isso produzirá:
»/tmp/foldera/folderb/folderc/file1“ -> »/tmp/foldera/file1“
»/tmp/folderc/folderd/foldere/file2“ -> »/tmp/folderc/file2“
»/tmp/folderf/folderg/folderh/file3“ -> »/tmp/folderf/file3“