Получение сценария оболочки отобразить выбранное расширение файла

NABLY означает, что Базовая монтажная система должна игнорировать варианты, которые не понимают, вместо того, чтобы не поучаствовать в целом. Это обычно используется в сочетании с NFS Automount, что приводит к второму вопросу: автоматический изменение.

Automount используется для автоматической установки файловой системы при необходимости, вместо того, чтобы все это установить все время; опять обычно используется с NFS. Просто делая LS -L LS -L MountPoint ... Чтобы удалить их, проверьте / etc / auto. * файлы, начните с auto.master который может ссылаться на другие файлы. После изменения этих файлов вам нужно перезагрузить autofs .

0
13.01.2015, 10:19
5 ответов

Как уже упоминалось, найти обычно является правильным инструментом при работе с файлами. Однако это может быть совершенно нормально.

Вы можете пропустить эту часть printf, если хотите, только включите ее как bonus :P

Одна вещь, которую вы также можете начать использовать, это printf. Как правило, это лучшая опция, чем echo. В простейшем виде у вас есть:

printf "Some text\n"

где \n - новая строка. Если вы хотите распечатать какую-либо переменную, вы можете использовать специальный символ %s (для строки):

printf "Name is %s \n" "$name"
              |           |
              |           +---- value
              +---------------- format string

printf "Name is %s city is %s \n" "$name" "$city"
              |                      |       |
              |                      +-------+----- values
              +------------------------------------ format string

Есть и другие символы, которые вы можете использовать, например, %d (для цифры). Можно также использовать другие специальные символы, например \t (табуляция).

Для вашего кода, как правило, лучше использовать более новый $(cmd) вместо ``cmd`. В вашем коде это будет:

$(ls *.txt)

Следующее, на что стоит обратить внимание, это цикл for. Ваше утверждение

for n in `ls *.txt`; do

не делает того, что вы думаете. Здесь n рассматривается как имя переменной, которой присваивается результат ls *.txt. Если у вас есть файлы:

a.txt
b.txt
c.txt

Выполнение кода расширится до:

for n in a.txt b.txt c.txt; do

То есть: для каждой итерации n устанавливается следующее имя файла. В итоге:

n=a.txt  (first loop)
n=b.txt  (second loop)
n=c.txt  (last loop)

Если мы соберем это вместе, то, например, сможем написать что-нибудь вроде этого:

#!/bin/bash

printf "Write the file extension you want to search for: "
read ext

printf "Searching for files with extension '%s'\n" "$ext"

for file in *"$ext"; do
    printf "File: %s\n" "$file"
done

Или вы можете просто сказать:

ls *"$ext"

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

1
28.01.2020, 02:51

Вы должны использовать Найти . Что-то вроде как:

echo "Write the file extension you want to search for:"
read n
find . -name "*.$n"

В любом случае, то, что вы, вероятно, намеревались сделать:

for i in *."$n"
do
    echo "$i"
done

В противном случае вы не используете значение n (вместо этого используя фиксированное расширение TXT ) и перезаписать значение чтения N в для цикла ,

0
28.01.2020, 02:51

Вы можете сделать Это:

#!/bin/bash
echo -n "Write the file extension you want to search for:"
read n
find $1 -iname "*.$n" -print 

Использование:

./myscript.sh mypath

Выход:

root@debian:/home/mohsen/test# ./myscript.sh /home/mohsen
Write the file extension you want to search for:sh
/home/mohsen/Downloads/binary files/apt-fast_aria2c.sh
/home/mohsen/Downloads/binary files/apt-fast.sh
/home/mohsen/Downloads/binary files/toggle_touchpad.sh
/home/mohsen/Downloads/binary files/nvidia-versions.sh
/home/mohsen/Downloads/R/x/PacketTracer601/set_ptenv.sh
/home/mohsen/codes/IraninCalendar/test/jcal-master/sources/ltmain.sh
/home/mohsen/codes/IraninCalendar/test/jcal-master/sources/autogen.sh
^C
0
28.01.2020, 02:51

поиск расширения файла Andy я хочу, а затем отображать, сколько из Их есть

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

wc -l < <(ls *."$n")
0
28.01.2020, 02:51

Однострочная команда:

echo "Enter file extension:"  
for f in `find <some_path> -name "*$(read n; echo $n)"` ; do echo $f ; done
0
28.01.2020, 02:51

Теги

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