2013-09-13 3 views
0

Обычно команда ls -la показывает файлы и права доступа, владельцы и группу доступа к копированию. **Как перечислить все каталоги/файлы, на которые у вас есть разрешение на доступ к копии - Unix

  • Как я могу перечислить только список каталогов/файлов, которые у меня есть доступ?
  • Как скопировать эти каталоги/файлы в каталог назначения?
+0

Доступ определяется как чтение/запись/выполнение простым языком. На какой из них вы ссылаетесь? – anubhava

+0

права на копирование, поэтому я предполагаю, что это запись/выполнение доступа. – alvas

+0

Для первой части 'Как я могу перечислить только список каталогов/файлов, к которым у меня есть доступ?' Вам просто нужны разрешения на чтение файлов и права на чтение/выполнение в каталогах. – anubhava

ответ

1

Попробуйте это:

a=`find $Your_Source_Path -iname "yourFolder_whose_Files_tohide" -prune -o -type f -print` 
for i in $a 
do 
    cp $Your_source $Your_Dest_Path 
done 
+0

нет способа сделать это в команде с одним слоем? – alvas

+0

Вот две команды для поиска, а вторая - для cp, поэтому для перечисления необходимых файлов. –

+0

Что означает 'yourFolder_whose_Files_tohide'? – alvas

0

один ответ, который больше будет копировать только те файлы, имеющие разрешение на доступ копию. Для этого сначала перейдите в каталог, файл которого нужно скопировать. Также внутри этого упоминается путь назначения, где вы хотите скопировать. Попробуйте следующее: -

destination_Path="/Users/Home/Desktop/test" 
b=~/Desktop/copyPermission.txt 
if [ ! -f $b ] 
then 
touch $b 
fi 
a=`ls -l` 
e="-----w--w-" 
echo "\n$a" | sed '1d' > $b 
g=`pwd` 
while read line 
do 
d=`echo "$line" | awk '{print $1}'` 
if [ $e != $d ] 
then 
r=`echo "$line" | awk '{print $9}'` 
echo "Can have copy permission $g/$r" 
{ 
cp $g/$r "$destination_Path" && echo "copied successfully" 
} || { 
echo "cannot copy due to some error" 
} 
#else 
#r=`echo "$line" | awk '{print $9}'` 
#echo "Cannot have copy permission $r" 
fi 
done <"$b"