конкретная копия файлов

У меня есть файлы и каталоги с одинаковым суффиксом (от 0 до 310). и я хочу скопировать файл (0) в каталог (0) , файл (10) в каталог (10) и перейти по файл (310) в каталог (310) .

Есть ли способ скопировать их все одновременно?

0
24.08.2017, 21:56
1 ответ

Перебрать файлы и переместить их в соответствующие каталоги,

for FILE in *; do 
if [[ -f "$FILE" ]]; then 
    echo mv "$FILE" "dir${FILE##file}";
fi
done
  • if [[ -f "$FILE" ]]; then, проверьте $FILE, если это файл -f, а не каталог -d.
  • ${FILE##file}, (вырезают -вверх -до -последний -префикс )удаляет префикс fileиз имени файла и сохраняет только числовую часть.
  • Вам нужно проехать echoдля пробного прогона, чтобы иметь реальное движение.

Пример вывода:

file0 --> dir0
file1 --> dir1
file2 --> dir2
file3 --> dir3

Обновление:Если ваше имя файла имеет суффикс, например file##.xyz, вы можете использовать скрипт следующим образом:

for FILE in *; do
    if [[ -f "$FILE" ]]; then
    dname="${FILE##file}";
    echo mv "$FILE" "dir${dname%.inp}";
fi
done

Эта ${dname%.inp}часть кода (вырезает -вверх -до -первый -суффикс )удаляет .inpс конца имени файла, часть ${FILE##file}которого уже удалена его префикс fileперед,поэтому будет производиться только числовая часть.

Или даже вы можете использовать следующее.

for FILE in *; do
    if [[ -f "$FILE" ]]; then
    echo mv "$FILE" "dir${FILE//[^0-9]/}";
fi
done
0
28.01.2020, 04:40

Теги

Похожие вопросы