Сведение каталога и поэтапное переименование файлов (MacOS)

Не уверен, что полностью понял то, о чем вы спрашиваете.

Скорее всего, SA добавил записи ulimit в /etc/profile для продукта COTS (, обычно базы данных )или пользовательского приложения.

Причина, по которой вы видите другое значение через plimit, может заключаться в том, что пользователь/приложение могло установить другое значение, или оно могло быть получено другим механизмом управления ресурсами. т.е. :/etc/проект

0
12.01.2020, 18:15
1 ответ

Как двухэтапный -процесс:

Один уровень

Начиная с

.
├── a
│   ├── file1.pdf
│   ├── file1.txt
│   ├── file2.pdf
│   └── file2.txt
└── b
    ├── file1.pdf
    └── file1.txt

1 )переместить файлы в каталог, названный в соответствии с их корневым именем:

├── a
│   ├── file1
│   │   ├── file1.pdf
│   │   └── file1.txt
│   └── file2
│       ├── file2.pdf
│       └── file2.txt
└─ b
    └── file1
        ├── file1.pdf
        └── file1.txt

2 )Итерация этих подкаталогов -при увеличении индекса и переместить/переименовать файлы

├── 1-file1.pdf
├── 1-file1.txt
├── 2-file2.pdf
├── 2-file2.txt
├── 3-file1.pdf
└── 3-file1.txt

Код (дляbash)

# To be run with your Dir1 as the top directory.

tree. 

for f in */* # iterate files in directories
do
    dir="${f%.*}"  # same with dropped extension
    mkdir -p "$dir"
    mv "$f" "$dir"
done

tree.

i=0
for d in */*/ # iterate subdirectories create above
do
    (( ++i ))
    for f in "$d"/*
    do
        mv "$f" $i-${f##*/} # drop path components and prefix with index
    done
done
rmdir */*/ */
tree.

(вы, конечно, можете удалить вызовыtree).

Мульти -уровень

Начиная с:

.
├── a
│   ├── file1.pdf
│   ├── file1.txt
│   ├── file2.pdf
│   └── file2.txt
└── b
    ├── c
    │   ├── file1.pdf
    │   └── file1.txt
    ├── file1.pdf
    └── file1.txt

Промежуточный шаг даст:

.
├── a
│   ├── file1
│   │   ├── file1.pdf
│   │   └── file1.txt
│   └── file2
│       ├── file2.pdf
│       └── file2.txt
└── b
    ├── c
    │   └── file1
    │       ├── file1.pdf
    │       └── file1.txt
    └── file1
        ├── file1.pdf
        └── file1.txt

и окончательный:

├── 1-file1.pdf
├── 1-file1.txt
├── 2-file2.pdf
├── 2-file2.txt
├── 3-file1.pdf
├── 3-file1.txt
├── 4-file1.pdf
└── 4-file1.txt

Полный код:

shopt -s extglob
shopt -s globstar
shopt -s nullglob
tree. 

dirs=( */ ) 
for f in **/*.*
do
    dir="${f%.*}"
    mkdir -p "$dir"
    mv "$f" "$dir"
done

tree.

i=0 
for d in **/
do
    files=("$d"/*.*)
    [[ ${#files[@]} -eq 0 ]] && continue
    (( ++i ))
    for f in "${files[@]}"
    do
        mv -v "$f" $i-${f##*/}
    done
done
rm -r */
tree.

Этот код предполагает, что все ваши файлы имеют точку в имени (расширении ), а каталоги — нет.

0
28.01.2020, 02:56

Теги

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