我们需要将目标文件夹的列表设置为777。
请告诉我,这类循环有一个更干净、更聪明的方法,而不必吐出一个文件,然后从文件中读取。:)
#!/bin/bash
inputFile="/private/tmp/.swatchTempFolderList.txt"
echo '/Applications/Adobe\ Photoshop\ CC\ 2018/Presets/Color\ Books
/Applications/Adobe\ Photoshop\ CC\ 2017/Presets/Color\ Books
/Applications/Adobe\ Photoshop\ CC\ 2015.5/Presets/Color\ Books
/Applications/Adobe\ Photoshop\ CC\ 2015/Presets/Color\ Books
/Applications/Adobe\ Photoshop\ CC\ 2014/Presets/Color\ Books
/Applications/Adobe\ Photoshop\ CC/Presets/Color\ Books
/Applications/Adobe\ Illustrator\ CC\ 2018/Presets.localized/en_US/Swatches/Color\ Books
/Applications/Adobe\ Illustrator\ CC\ 2017/Presets.localized/en_US/Swatches/Color\ Books
/Applications/Adobe\ Illustrator\ CC\ 2015.3/Presets.localized/en_US/Swatches/Color\ Books
/Applications/Adobe\ Illustrator\ CC\ 2015/Presets.localized/en_US/Swatches/Color\ Books
/Applications/Adobe\ Illustrator\ CC\ 2014/Presets.localized/en_US/Swatches/Color\ Books
/Applications/Adobe\ Illustrator\ CC/Presets.localized/en_US/Swatches/Color\ Books
/Applications/Adobe\ Illustrator\ CC\ 2018/Presets.localized/en_GB/Swatches/Color\ Books
/Applications/Adobe\ Illustrator\ CC\ 2017/Presets.localized/en_GB/Swatches/Color\ Books
/Applications/Adobe\ Illustrator\ CC\ 2015.3/Presets.localized/en_GB/Swatches/Color\ Books
/Applications/Adobe\ Illustrator\ CC\ 2015/Presets.localized/en_GB/Swatches/Color\ Books
/Applications/Adobe\ Illustrator\ CC\ 2014/Presets.localized/en_GB/Swatches/Color\ Books
/Applications/Adobe\ Illustrator\ CC/Presets.localized/en_GB/Swatches/Color\ Books
/Applications/Adobe\ InDesign\ CC\ 2018/Presets/Swatch\ Libraries
/Applications/Adobe\ InDesign\ CC\ 2017/Presets/Swatch\ Libraries
/Applications/Adobe\ InDesign\ CC\ 2015/Presets/Swatch\ Libraries
/Applications/Adobe\ InDesign\ CC\ 2014/Presets/Swatch\ Libraries
/Applications/Adobe\ InDesign\ CC/Presets/Swatch\ Libraries' > "$inputFile"
while read f; do
if [ -e "$f" ]; then
echo "Setting 777 for $f..."
chmod 777 "$f"
else
echo "Skipping, since $f does not exist..."
fi
done < "$inputFile"
exit 0
发布于 2018-01-23 23:12:42
可以将所有文件转储到数组中:
arr=("file1" "file2" "file3")
chmod -- 777 "${arr[@]}"
如果您有大量的文件,您可能会遇到Argument list too long
错误。在这种情况下,您可以这样做:
printf '%s\0' "${arr[@]}" | xargs -0 chmod -- 777
或者使用一个好的旧for
循环:
for file in "${arr[@]}"; do
chmod -- 777 "$file"
done
当然,您可以直接遍历文件:
for file in "file1" "file2" "file3"; do
chmod -- 777 "$file"
done
https://stackoverflow.com/questions/48412316
复制相似问题