Isso presume que você já tenha cd
no nível que deseja manter no nome. Você pode verificar novamente usando find
:
find -type f -iname abc.json
./A, B/Subdir Level 1/Subdir L2/abc.json
./A, C/Subdir Level 1/Subdir L2/abc.json
./A, F/Subdir Level 1/Subdir L2/abc.json
Supondo que você já tenha feito a pasta ../NewFolder, o comando a seguir deve copiar todos os arquivos json e colocar o subdiretório de primeiro nível no novo nome. Apenas cole todas as 4 linhas no seu terminal de uma só vez!
find -type f -iname \*.json | while read x; do
dirname="$(echo "$x" | sed -r 's_^\.?/?__;s_/.*__')";
filename="$(echo "$x" | sed -r 's_.*/__')";
cp -v "$x" "../NewFolder/$dirname - $filename"; done
‘./A, B/Subdir Level 1/Subdir L2/abc.json’ -> ‘../NewFolder/A, B - abc.json’
‘./A, C/Subdir Level 1/Subdir L2/abc.json’ -> ‘../NewFolder/A, C - abc.json’
‘./A, F/Subdir Level 1/Subdir L2/abc.json’ -> ‘../NewFolder/A, F - abc.json’