Перемещение файлов в папки с помощью скрипта bash

Команда aproposполезна во многих отношениях, но она также дает вам много «мусора». Большинство вещей, которые вы перечисляете, являются подпрограммами библиотеки C (, для этого предназначен раздел 3 руководства ), которые вы не можете использовать непосредственно из оболочки.

Чтобы их использовать, вам нужно написать программу на C, которая их вызывает. Это выходит за рамки тем, охватываемых этим конкретным сайтом (, это будет тема на StackOverflow).

Вот, таким образом, ответы на ваши вопросы:

  1. Вы не можете, это подпрограммы библиотеки C.
  2. Вы не можете, если вы не пишете программу на C.

Я знаю, что вы это знаете, но для полноты картины :В оболочке, если у вас есть строка в переменной string, вы можете сделать

string='hello world'
printf 'Length of string "%s" is %d\n' "$string" "${#string}"

Это напечатает Length of string "hello world" is 11в терминале, где 11исходит из ${#string}, которое расширяется до длины строки в $string.

Внутри оболочка вполне может использовать один из библиотечных вызовов, которые вы перечислили, для вычисления длины.

Это наиболее эффективный способ получить длину строки, хранящейся в переменной оболочки, в самой оболочке.

Также обратите внимание, что ${#string}— это расширение параметра оболочки POSIX , поэтому оно переносимо между всеми оболочками, которые заявляют о любой степени соответствия POSIX.

1
02.11.2017, 04:13
1 ответ

Это должно охватывать большую часть того, что вы хотите сделать.

sortfood.sh

#!/bin/bash


# Puts files into subdirectories named after themselves in a directory.

# add more loops for more ID-criteria

for f in *AP*; do
    mkdir -p "./fruit/$f";
    mv -vn "$f" "./fruit/$f/";
done

for f in *RS*; do
    mkdir -p "./sweet/$f";
    mv -vn "$f" "./sweet/$f/";
done
2
27.01.2020, 23:33

Теги

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