для задачи цикла, обнаруживать файл с размером и копией независимо от имени

Ситуация:
Я хочу скопировать все odt файлы размером более 0 из одной папки в другую. Имена файлов будут содержать следующие символы: +% & [(и пробелы.

Вот моя попытка:

#!/bin/bash mvfunc () { if [ -s "$1" ]; then cp -n "$1" /home/telas/zztmp/currentfiles/ /usr/bin/truncate -s 0 "$1" return 0 fi } fileslist=$(ls --quoting-style=shell-always /home/telas/zzz/workingfiles/*.odt) for filename in "$fileslist" ; do mvfunc "$filename" done 

Вся помощь очень ценится !!

One Solution collect form web for “для задачи цикла, обнаруживать файл с размером и копией независимо от имени”

Вам лучше использовать расширение пути ( globbing ) в Bash, чем полагаться на внешние команды, такие как ls .

Если цикл for содержит подстановочные знаки, то Bash по умолчанию использует globbing, поэтому специальные символы не будут испорчены, как если бы они интерпретировали параметры, заданные в виде текстовой строки в результате замены команд.

И код будет более чистым и более портативным, потому что опция --quoting-style= специфична для GNU ls:

 #!/bin/bash mvfunc () { if [ -s "$1" ]; then cp -n "$1" currentfiles /usr/bin/truncate -s 0 "$1" return 0 fi } for filename in /home/telas/zzz/workingfiles/*.odt; do mvfunc "$filename" done 
  • Возвращаемые значения из функций
  • Почему цикл while останавливается после приостановки?
  • Как создать псевдоним для двух команд Git, которые используют параметр?
  • Печать последнего символа в указанном пути
  • Bash: Как читать по одной строке за один раз из вывода команды?
  • Удалить предложение автозавершения zsh
  • Переупорядочение файла на основе второго файла
  • SSH Agent-Forwarding работает, но как насчет sudo -u username no shell / permissions? композитор
  • Как программы с программным обеспечением с оболочкой уравновешивают скорость вывода / ввода?
  • матч и замена в PNG-файле
  • Найти все старые версии на основе версии в имени файла
  • Linux и Unix - лучшая ОС в мире.