У меня есть несколько Name*.txt
файлов в /home/user/my/path/to/my/data/
, среди других файлов с различными расширениями. Я хотел бы зациклить их, а затем использовать отдельные имена файлов в коде, поэтому общие решения, такие как this , не будут работать, поскольку переменная $ f в каждом цикле хранит весь путьвместе с именем файла. Я нуждаюсь в них отдельно, чтобы выполнить что-то вроде "примера выполнения" ниже. Мои попытки:
Попытка № 1:
#!/bin/bash
datapath="/home/user/my/path/to/my/data/"
outpath="/home/user/my/path/to/my/outputs/"
for f in $(ls $datapath"Name*.txt"); do
echo $f
...
cp $datapath$f $outpath"example_task"${f:0:10}
done
Это не сработало: ls: cannot access /home/user/my/path/to/my/data/Name*.txt: No such file or directory
. Хотя на терминале работает ls /home/user/my/path/to/my/data/Name*.txt
отлично работает. Я не могу понять, почему.
Попытка # 2:
#!/bin/bash
datapath="/home/user/my/path/to/my/data/"
outpath="/home/user/my/path/to/my/outputs/"
for f in $datapath"Name*.txt"; do
echo $f
...
cp $datapath$f $outpath"example_task"${f:0:10}
done
Здесь каждый $f
содержит полный список файлов, которые ls Name*.txt
обычно возвращаети не по одному, как можно было бы ожидать.
Как мне это сделать? Любые предложения будут высоко оценены.