Come rimuovere il carattere dello spazio (spazio bianco) dalla fine dei nomi di file e dei nomi?

3

Il problema con mac è che consente lo spazio alla fine del file o della cartella. Se questo file o cartella con carattere di spazio in fondo viene copiata su FTP utilizzando Filezilla o Dropbox, mac crea cartelle con "Foldername_WhiteSpaceConflict" Per eliminare questo problema, tutti i file e le cartelle con spazio devono essere rinominati senza carattere di spazio. Quale soluzione potrebbe essere la migliore usando terminale o qualche programma?

    
posta Kangarooo 23.02.2015 - 14:31
fonte

4 risposte

3

Ecco lo script per trovare e rimuovere lo spazio finale da file e dirs:

#!/bin/bash                                                                                                                                                                                                        

IFS=$'\n'
for file in $(find -d . -name "* ")
do
  target_name=$(echo "$file" | sed 's/[ \t]*$//')
  if [ "$file" != "$target_name" ]; then
      if [ -e "$target_name" ]; then
          echo "WARNING: $target_name already exists, file not renamed"
      else
          echo "Move $file to $target_name"
          mv "$file" "$target_name"
      fi
  fi
done
    
risposta data 23.02.2015 - 15:09
fonte
1

C'è un'applicazione per Mac chiamata ' Name Mangler ', questo farà tutto ciò che potreste voler fare su un file / nome della cartella e puoi persino creare il tuo codice personale e utilizzarlo nell'app. C'è una prova gratuita che ti dà 4 tentativi illimitati, e puoi annullare i nomi se commetti un errore.

    
risposta data 15.06.2017 - 18:59
fonte
0

Qualcosa del genere dovrebbe funzionare:

ruby -e "Dir.glob('* ').each { |name| File.rename name, name.chomp(' ') }"

Questo rimuoverà gli spazi finali da ogni file / dir nel pwd.

    
risposta data 23.02.2015 - 15:09
fonte
0

Ho dovuto correggere lo script un po 'di più. Per i file o le cartelle che terminano con la lettera "t", eliminerebbe anche quella lettera. E la chiamata per verificare se il file esiste non funzionava correttamente, quindi cambiava "nome_destinazione" in $ target_name e ora funziona.

#!/bin/bash                                                                                                                                                                                                        

IFS=$'\n'
for file in $(find -d . -name "* ")
do
  target_name=$(echo "$file" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
  if [ "$file" != "$target_name" ]; then
      if [ -e $target_name ]; then
          echo "WARNING: $target_name already exists, file not renamed"
      else
          echo "Move $file to $target_name"
          mv "$file" "$target_name"
      fi
  fi
done
    
risposta data 16.06.2016 - 01:20
fonte

Leggi altre domande sui tag