Ich bin in der Lage, alle Dateien in einem Verzeichnis und seinen Unterverzeichnissen zu finden. Ich speichere es in einem Array, aber ich muss auch diejenigen, die Leerzeichen in ihren Namen haben, zu einem Unterstrich umbenennen.Finden Sie alle Dateien in dir/Unterverzeichnissen und speichern Sie in einem Array, sondern auch Dateien mit Leerzeichen zu Unterstrich
Probenstruktur
./abc 123.txt
./dags/ftp.pyc
./dags/ftp.py
./logs/scheduler/2017-05-12/ftp.py.log
die Dateien finden und
array=($(find . -type f -print0 | xargs -0))
# Does not work
for i in ${array[@]};do echo ${i// /_};done
#Output
./abc
123.txt
./dags/ftp.pyc
./dags/ftp.py
./logs/scheduler/2017-05-12/ftp.py.log
Es in ein Array einfügen wäre ideal, wenn ich regex gegen den Wert laufen konnte, bevor es in das Array geht.
'echo" Dateiname mit Leerzeichen "| tr '' '_''> 'filename_with_spaces' – Aaron
Sie haben die Dateinamen nicht erfolgreich in ein Array eingegeben. Das erste Element im Array ist "./abc" und das zweite Element ist "123.txt". –
Verwenden Sie einfach umbenennen, oder tun Sie etwas wie: 'finden. -exec sh -c 'echo "$ 0" "$ {0 ///_}"' {} \; ' (dies behandelt keine anderen Leerzeichen als Leerzeichen) Der Versuch, die Dateien in ein Array zu stopfen, ist zum Scheitern verurteilt. –